haste_fhir_serialization_json/
lib.rs1use std::io::BufWriter;
2use std::io::Write;
3pub use traits::*;
4
5mod deserialize_primitives;
6pub mod errors;
7mod serialize_primitives;
8mod traits;
9
10#[cfg(feature = "derive")]
11pub mod derive;
12
13pub fn from_str<T: FHIRJSONDeserializer>(s: &str) -> Result<T, errors::DeserializeError> {
14 T::from_json_str(s)
15}
16
17pub fn from_bytes<T: FHIRJSONDeserializer>(bytes: &[u8]) -> Result<T, errors::DeserializeError> {
18 let value = serde_json::from_slice(bytes)?;
19 T::from_serde_value(&value, Context::AsValue)
20}
21
22pub fn from_serde_value<T: FHIRJSONDeserializer>(
23 value: &serde_json::Value,
24) -> Result<T, errors::DeserializeError> {
25 T::from_serde_value(value, Context::AsValue)
26}
27
28pub fn to_string<T: FHIRJSONSerializer>(value: &T) -> Result<String, SerializeError> {
29 let mut writer = BufWriter::new(Vec::new());
30 value.serialize_value(&mut writer)?;
31 writer.flush()?;
32 let content = writer.into_inner()?;
33
34 Ok(String::from_utf8(content)?)
35}
36
37pub fn to_writer<T: FHIRJSONSerializer>(
38 writer: &mut dyn Write,
39 value: &T,
40) -> Result<bool, SerializeError> {
41 value.serialize_value(writer)
42}