geoserde 0.5.2

Adapter between geographic features and GIS files
Documentation
#![cfg(feature = "geozero")]

use geo_types::{LineString, Polygon};
use geoserde::GeometrySerializer;
use serde::Serialize;

#[test]
fn polygon_test() -> anyhow::Result<()> {
    let mut buf = Vec::<u8>::new();
    let mut sink = geozero::wkt::WktWriter::new(&mut buf);
    let mut sut = GeometrySerializer::new(&mut sink);
    let polygon = Polygon::new(
        LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
        vec![],
    );
    polygon.serialize(&mut sut)?;
    assert_eq!("POLYGON((0 0,1 1,1 0,0 0))", String::from_utf8(buf)?);
    Ok(())
}

#[cfg(feature = "geozero")]
#[test]
fn holed_polygon_test() -> anyhow::Result<()> {
    use geoserde::GeometrySerializer;

    let mut buf = Vec::<u8>::new();
    let mut sink = geozero::wkt::WktWriter::new(&mut buf);
    let polygon = Polygon::new(
        LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
        vec![LineString::from(vec![
            (0.1, 0.1),
            (0.9, 0.9),
            (0.9, 0.1),
            (0.1, 0.1),
        ])],
    );
    let mut sut = GeometrySerializer::new(&mut sink);
    polygon.serialize(&mut sut)?;
    assert_eq!(
        "POLYGON((0 0,1 1,1 0,0 0),(0.1 0.1,0.9 0.9,0.9 0.1,0.1 0.1))",
        String::from_utf8(buf)?
    );
    Ok(())
}