use crate::MonotoneChains;
use crate::{GeoNum, Intersects};
mod multipolygon;
mod polygon;
fn boundary_intersects<'a: 'caller, 'caller, T, G1, G2>(lhs: &'caller G1, rhs: &'caller G2) -> bool
where
T: GeoNum + 'a,
G1: MonotoneChains<'a, 'caller, T>,
G2: MonotoneChains<'a, 'caller, T>,
{
let rhs_arr = rhs.chains().collect::<Vec<_>>();
lhs.chains()
.any(|lhs| rhs_arr.iter().any(|rhs| lhs.intersects(*rhs)))
}
#[cfg(test)]
mod test {
use crate::ContainsProperly;
use crate::monotone_chain::geometry::*;
use geo_types::*;
#[test]
fn exhaustive_compile_test() {
let poly = Polygon::new(LineString::from(vec![(0., 0.), (1., 1.), (1., 0.)]), vec![]);
let multi_poly = MultiPolygon::new(vec![poly.clone()]);
let m_poly: MonotoneChainPolygon<f64> = (&poly).into();
let m_multi_poly: MonotoneChainMultiPolygon<f64> = (&multi_poly).into();
let _ = m_poly.contains_properly(&m_poly);
let _ = m_multi_poly.contains_properly(&m_poly);
let _ = m_poly.contains_properly(&m_poly);
let _ = m_poly.contains_properly(&m_multi_poly);
let _ = m_poly.contains_properly(&m_multi_poly);
let _ = m_multi_poly.contains_properly(&m_multi_poly);
let _ = m_multi_poly.contains_properly(&m_poly);
let _ = m_multi_poly.contains_properly(&m_multi_poly);
}
}