Skip to main content

deserialize_opt_angle

Function deserialize_opt_angle 

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

Like deserialize_angle, but deserializes into an Option<f64> instead of a f64.

ยงExamples

use serde::{Deserialize};
use dyn_quantity::deserialize_opt_angle;
use indoc::indoc;

#[derive(Deserialize, Debug)]
struct OptAngleWrapper {
    #[serde(deserialize_with = "deserialize_opt_angle")]
    opt_angle: Option<f64>,
}

let ser = indoc! {"
---
opt_angle: 2 rad
"};
let wrapper: OptAngleWrapper = serde_yaml::from_str(&ser).unwrap();
assert_eq!(wrapper.opt_angle.unwrap(), 2.0);

let ser = indoc! {"
---
opt_angle:
"};
let wrapper: OptAngleWrapper = serde_yaml::from_str(&ser).unwrap();
assert!(wrapper.opt_angle.is_none());