Function shapefile::record::convert_shapes_to_vec_of
source · pub fn convert_shapes_to_vec_of<S>(shapes: Vec<Shape>) -> Result<Vec<S>, Error>where
S: TryFrom<Shape>,
Error: From<<S as TryFrom<Shape>>::Error>,
Expand description
Function that can converts a Vec<Shape>
to a vector of any real struct
(ie Polyline, Multipatch, etc)
if all the Shapes
in the Vec
are of the correct corresponding variant.
Examples
use shapefile::{Polyline, Multipoint, Point, Shape};
use shapefile::convert_shapes_to_vec_of;
// Build a Vec<Shape> with only polylines in it
let points = vec![Point::default(), Point::default()];
let shapes = vec![
Shape::from(Polyline::new(points.clone())),
Shape::from(Polyline::new(points)),
];
// try a conversion to the wrong type
assert_eq!(convert_shapes_to_vec_of::<Multipoint>(shapes).is_ok(), false);
use shapefile::{convert_shapes_to_vec_of, MultipointZ};
let shapes = shapefile::read_shapes("tests/data/multipointz.shp")?;
let multipoints = convert_shapes_to_vec_of::<MultipointZ>(shapes);
assert_eq!(multipoints.is_ok(), true);