Description
In the course of refactoring rust-postgis to use rust-geo geometries, I'm looking at needed conversions between different georust geometries. One goal would be to store a rust-gdal geometry with rust-postgis as efficient as possible.
One possible solution would be using iterators returning a Point trait instead of accessing the structs directly. If rust-gdal would implement this trait, storing a geometry with rust-postgis could be done without any conversion. And if the geo algorithms would use this trait, they could be applied directly on geometries implementing this trait. It should also solve the ownership problem in #21.
A simplified trait could be
pub trait PointType {
fn x(&self) -> f64;
fn y(&self) -> f64;
//...
}
When this trait is implemented for geo::Point
and geo::LineString
implements IntoIterator
with Item=&PointType
, you can iterate like
let xsum = linestring.into_iter().fold(0., |sum, p| sum + p.x());