shapefile 0.1.0

Read & Write shapefiles in Rust
Documentation
#[cfg(feature = "geo-types")]
mod geo_types_conversions {
    extern crate geo_types;
    use std::convert::TryFrom;

    #[test]
    fn test_polygon_conversion() {
        let shp_polygons = shapefile::read_as::<_, shapefile::Polygon>("tests/data/multi_polygon.shp")
            .unwrap();

        let mut multi_polygons = shp_polygons
            .into_iter()
            .map(|polygon| geo_types::MultiPolygon::<f64>::try_from(polygon).unwrap())
            .collect::<Vec<geo_types::MultiPolygon<f64>>>();

        let multi_polygon = multi_polygons.pop().unwrap();
        let geo_polygons = multi_polygon.into_iter().collect::<Vec<geo_types::Polygon<f64>>>();
        assert_eq!(geo_polygons.len(), 4);
        for gp in &geo_polygons {
            assert_eq!(gp.interiors().len(), 0);
        }

        let multi_polygon = geo_types::MultiPolygon::from(geo_polygons);
        let polygon = shapefile::Polygon::from(multi_polygon);

        let shp_polygons = shapefile::read_as::<_, shapefile::Polygon>("tests/data/multi_polygon.shp")
            .unwrap();

        assert_eq!(&polygon.points, &shp_polygons[0].points);
        assert_eq!(&polygon.parts, &shp_polygons[0].parts);
    }
}