Skip to main content

deserialize_angle

Function deserialize_angle 

Source
pub fn deserialize_angle<'de, D>(
    deserializer: D,
) -> Result<f64, <D as Deserializer<'de>>::Error>
where D: Deserializer<'de>,
Expand description

Deserializes an angle from a valid DynQuantity representation (see docstring of DynQuantity). The output value is always in radians.

This function is meant to be used in conjunction with serdes Deserialize macro and the deserialize_with annotation:

ยงExamples

use serde::{Deserialize};
use dyn_quantity::deserialize_angle;
use indoc::indoc;
use std::f64::consts::PI;

#[derive(Deserialize, Debug)]
struct AngleWrapper {
    #[serde(deserialize_with = "deserialize_angle")]
    angle: f64,
}

let ser = indoc! {"
---
angle: 360 / 2 degree
"};
let wrapper: AngleWrapper = serde_yaml::from_str(&ser).unwrap();
assert_eq!(wrapper.angle, PI);