haste_fhir_serialization_json/
lib.rs

1use 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}