1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
#[derive(PartialEq, Clone, Copy, Debug)] pub struct Coordinate { pub x: f64, pub y: f64, } #[derive(PartialEq, Clone, Copy)] pub struct Point(pub Coordinate); #[derive(PartialEq, Clone)] pub struct MultiPoint(pub Vec<Point>); #[derive(PartialEq, Clone)] pub struct LineString(pub Vec<Point>); #[derive(PartialEq, Clone)] pub struct MultiLineString(pub Vec<LineString>); #[derive(PartialEq, Clone)] pub struct Polygon(pub LineString, pub Vec<LineString>); #[derive(PartialEq, Clone)] pub struct MultiPolygon(pub Vec<Polygon>); #[derive(PartialEq, Clone)] pub struct GeometryCollection(pub Vec<Geometry>); #[derive(PartialEq, Clone)] pub enum Geometry { Point(Point), LineString(LineString), Polygon(Polygon), MultiPoint(MultiPoint), MultiLineString(MultiLineString), MultiPolygon(MultiPolygon), GeometryCollection(GeometryCollection) } #[cfg(test)] mod test { use ::types::*; #[test] fn type_test() { let c = Coordinate { x: 40.02f64, y: 116.34 }; let p = Point(c); let Point(c2) = p; assert_eq!(c, c2); assert_eq!(c.x, c2.x); assert_eq!(c.y, c2.y); } }