pub fn deserialize_quantity<'de, D, T>(deserializer: D) -> Result<T, D::Error>where
D: Deserializer<'de>,
T: DeserializeOwned + TryFrom<DynQuantity<Complex<f64>>>,
<T as TryFrom<DynQuantity<Complex<f64>>>>::Error: Display,Expand description
Deserializes a type T implementing TryFrom<DynQuantity> from a valid
DynQuantity representation (see docstring of DynQuantity).
This function is meant to be used in conjunction with serdes Deserialize
macro and the deserialize_with annotation:
ยงExamples
use serde::{Deserialize};
use uom::si::{f64::Length, length::meter};
use dyn_quantity::deserialize_quantity;
use indoc::indoc;
#[derive(Deserialize, Debug)]
struct LengthWrapper {
#[serde(deserialize_with = "deserialize_quantity")]
length: Length,
}
let ser = indoc! {"
---
length: 1200 mm
"};
let wrapper: LengthWrapper = serde_yaml::from_str(&ser).unwrap();
assert_eq!(wrapper.length.get::<meter>(), 1.2);