Function serialize_optional_geometry

Source
pub fn serialize_optional_geometry<'a, IG, S>(
    geometry: &'a Option<IG>,
    ser: S,
) -> Result<S::Ok, S::Error>
Expand description

serde::serialize_with helper to serialize an optional type like a geo_types, as an optional GeoJSON Geometry.

ยงExamples

use geojson::ser::serialize_optional_geometry;
use serde::Serialize;
use serde_json::{json, to_value};

#[derive(Serialize)]
struct MyStruct {
    count: usize,
    #[serde(
        skip_serializing_if = "Option::is_none",
        serialize_with = "serialize_optional_geometry"
    )]
    geometry: Option<geo_types::Point<f64>>,
}

let my_struct = MyStruct {
    count: 0,
    geometry: Some(geo_types::Point::new(1.2, 0.5)),
};
let json = json! {{
    "count": 0,
    "geometry": {
        "type": "Point",
        "coordinates": [1.2, 0.5]
    },
}};
assert_eq!(json, to_value(my_struct).unwrap());

let my_struct = MyStruct {
    count: 1,
    geometry: None,
};
let json = json! {{
    "count": 1,
}};
assert_eq!(json, to_value(my_struct).unwrap());