use crate::GeoNum;
use crate::MonotoneChain;
use crate::geometry::LineString;
pub struct MonotoneChainLineString<'a, T: GeoNum> {
geometry: &'a LineString<T>,
chain: MonotoneChain<'a, T>,
}
impl<'a, T: GeoNum> MonotoneChainLineString<'a, T> {
pub fn geometry(&self) -> &'a LineString<T> {
self.geometry
}
pub fn chain(&self) -> &MonotoneChain<'a, T> {
&self.chain
}
}
impl<'a, T: GeoNum> From<&'a LineString<T>> for MonotoneChainLineString<'a, T> {
fn from(linestring: &'a LineString<T>) -> Self {
Self {
geometry: linestring,
chain: MonotoneChain::from(linestring),
}
}
}
impl<'a, T: GeoNum> From<MonotoneChainLineString<'a, T>> for &'a LineString<T> {
fn from(val: MonotoneChainLineString<'a, T>) -> Self {
val.geometry
}
}