geo/algorithm/covers/
coord.rs

1use super::{Covers, impl_covers_from_intersects};
2use crate::GeoNum;
3use crate::Intersects;
4use crate::geometry::*;
5
6impl<T, G> Covers<Coord<T>> for G
7where
8    T: GeoNum,
9    G: Intersects<Coord<T>>,
10{
11    fn covers(&self, rhs: &Coord<T>) -> bool {
12        self.intersects(rhs)
13    }
14}
15
16// valid because self is convex geometry
17// all exterior pts of RHS intersecting self means self covers RHS
18impl_covers_from_intersects!(Coord<T>, [
19Point<T>, MultiPoint<T>,
20Line<T>,
21LineString<T>, MultiLineString<T>,
22Rect<T>, Triangle<T>,
23Polygon<T>,  MultiPolygon<T>,
24Geometry<T>, GeometryCollection<T>
25]);
26
27#[cfg(test)]
28mod tests {
29    use super::*;
30
31    #[test]
32    fn test_rhs_empty() {
33        let s: Coord<f64> = Coord::zero();
34        assert!(!s.covers(&LineString::empty()));
35        assert!(!s.covers(&Polygon::empty()));
36        assert!(!s.covers(&MultiPoint::empty()));
37        assert!(!s.covers(&MultiLineString::empty()));
38        assert!(!s.covers(&MultiPolygon::empty()));
39        assert!(!s.covers(&GeometryCollection::empty()));
40    }
41}