pub struct MultiLineString<T = f64>(pub Vec<LineString<T>>)
where
T: CoordNum;geo-types only.Expand description
A collection of
LineStrings. Can
be created from a Vec of LineStrings or from an
Iterator which yields LineStrings. Iterating over this
object yields the component LineStrings.
§Semantics
The boundary of a MultiLineString is obtained by
applying the “mod 2” union rule: A Point is in the
boundary of a MultiLineString if it is in the
boundaries of an odd number of elements of the
MultiLineString.
The interior of a MultiLineString is the union of
the interior, and boundary of the constituent
LineStrings, except for the boundary as defined
above. In other words, it is the set difference of the
boundary from the union of the interior and boundary of
the constituents.
A MultiLineString is simple if and only if all of
its elements are simple and the only intersections
between any two elements occur at Points that are on
the boundaries of both elements. A MultiLineString is
closed if all of its elements are closed. The boundary
of a closed MultiLineString is always empty.
Tuple Fields§
§0: Vec<LineString<T>>Implementations§
Source§impl<T> MultiLineString<T>where
T: CoordNum,
impl<T> MultiLineString<T>where
T: CoordNum,
Sourcepub fn new(value: Vec<LineString<T>>) -> MultiLineString<T>
pub fn new(value: Vec<LineString<T>>) -> MultiLineString<T>
Returns a MultiLineString with the given LineStrings as elements
Sourcepub fn empty() -> MultiLineString<T>
pub fn empty() -> MultiLineString<T>
Returns an empty MultiLineString
Sourcepub fn is_closed(&self) -> bool
pub fn is_closed(&self) -> bool
True if the MultiLineString is empty or if all of its LineStrings are closed - see
LineString::is_closed.
§Examples
use geo_types::{MultiLineString, LineString, line_string};
let open_line_string: LineString<f32> = line_string![(x: 0., y: 0.), (x: 5., y: 0.)];
assert!(!MultiLineString::new(vec![open_line_string.clone()]).is_closed());
let closed_line_string: LineString<f32> = line_string![(x: 0., y: 0.), (x: 5., y: 0.), (x: 0., y: 0.)];
assert!(MultiLineString::new(vec![closed_line_string.clone()]).is_closed());
// MultiLineString is not closed if *any* of it's LineStrings are not closed
assert!(!MultiLineString::new(vec![open_line_string, closed_line_string]).is_closed());
// An empty MultiLineString is closed
assert!(MultiLineString::<f32>::empty().is_closed());Source§impl<T> MultiLineString<T>where
T: CoordNum,
impl<T> MultiLineString<T>where
T: CoordNum,
pub fn iter(&self) -> impl Iterator<Item = &LineString<T>>
pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut LineString<T>>
Trait Implementations§
Source§impl<T> Clone for MultiLineString<T>
impl<T> Clone for MultiLineString<T>
Source§fn clone(&self) -> MultiLineString<T>
fn clone(&self) -> MultiLineString<T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<T> Debug for MultiLineString<T>where
T: CoordNum,
impl<T> Debug for MultiLineString<T>where
T: CoordNum,
Source§impl<T, ILS> From<ILS> for MultiLineString<T>
impl<T, ILS> From<ILS> for MultiLineString<T>
Source§fn from(ls: ILS) -> MultiLineString<T>
fn from(ls: ILS) -> MultiLineString<T>
Source§impl<T> From<MultiLineString<T>> for Geometry<T>where
T: CoordNum,
impl<T> From<MultiLineString<T>> for Geometry<T>where
T: CoordNum,
Source§fn from(x: MultiLineString<T>) -> Geometry<T>
fn from(x: MultiLineString<T>) -> Geometry<T>
Source§impl<T> From<MultiLineString<T>> for MultiLineString<T>where
T: CoordNum,
impl<T> From<MultiLineString<T>> for MultiLineString<T>where
T: CoordNum,
Source§fn from(multi_line_string: MultiLineString<T>) -> MultiLineString<T>
fn from(multi_line_string: MultiLineString<T>) -> MultiLineString<T>
Convert from a WKT MULTILINESTRING to a geo_types::MultiLineString
Source§impl<T, ILS> FromIterator<ILS> for MultiLineString<T>
impl<T, ILS> FromIterator<ILS> for MultiLineString<T>
Source§fn from_iter<I>(iter: I) -> MultiLineString<T>where
I: IntoIterator<Item = ILS>,
fn from_iter<I>(iter: I) -> MultiLineString<T>where
I: IntoIterator<Item = ILS>,
Source§impl<'a, T> GeometryTrait for &'a MultiLineString<T>where
T: CoordNum + 'a,
impl<'a, T> GeometryTrait for &'a MultiLineString<T>where
T: CoordNum + 'a,
Source§type PointType<'b> = Point<<&'a MultiLineString<T> as GeometryTrait>::T>
where
&'a MultiLineString<T>: 'b
type PointType<'b> = Point<<&'a MultiLineString<T> as GeometryTrait>::T> where &'a MultiLineString<T>: 'b
Source§type LineStringType<'b> = LineString<<&'a MultiLineString<T> as GeometryTrait>::T>
where
&'a MultiLineString<T>: 'b
type LineStringType<'b> = LineString<<&'a MultiLineString<T> as GeometryTrait>::T> where &'a MultiLineString<T>: 'b
Source§type PolygonType<'b> = Polygon<<&'a MultiLineString<T> as GeometryTrait>::T>
where
&'a MultiLineString<T>: 'b
type PolygonType<'b> = Polygon<<&'a MultiLineString<T> as GeometryTrait>::T> where &'a MultiLineString<T>: 'b
Source§type MultiPointType<'b> = MultiPoint<<&'a MultiLineString<T> as GeometryTrait>::T>
where
&'a MultiLineString<T>: 'b
type MultiPointType<'b> = MultiPoint<<&'a MultiLineString<T> as GeometryTrait>::T> where &'a MultiLineString<T>: 'b
Source§type MultiLineStringType<'b> = MultiLineString<<&'a MultiLineString<T> as GeometryTrait>::T>
where
&'a MultiLineString<T>: 'b
type MultiLineStringType<'b> = MultiLineString<<&'a MultiLineString<T> as GeometryTrait>::T> where &'a MultiLineString<T>: 'b
Source§type MultiPolygonType<'b> = MultiPolygon<<&'a MultiLineString<T> as GeometryTrait>::T>
where
&'a MultiLineString<T>: 'b
type MultiPolygonType<'b> = MultiPolygon<<&'a MultiLineString<T> as GeometryTrait>::T> where &'a MultiLineString<T>: 'b
Source§type GeometryCollectionType<'b> = GeometryCollection<<&'a MultiLineString<T> as GeometryTrait>::T>
where
&'a MultiLineString<T>: 'b
type GeometryCollectionType<'b> = GeometryCollection<<&'a MultiLineString<T> as GeometryTrait>::T> where &'a MultiLineString<T>: 'b
Source§type RectType<'b> = Rect<<&'a MultiLineString<T> as GeometryTrait>::T>
where
&'a MultiLineString<T>: 'b
type RectType<'b> = Rect<<&'a MultiLineString<T> as GeometryTrait>::T> where &'a MultiLineString<T>: 'b
Source§type TriangleType<'b> = Triangle<<&'a MultiLineString<T> as GeometryTrait>::T>
where
&'a MultiLineString<T>: 'b
type TriangleType<'b> = Triangle<<&'a MultiLineString<T> as GeometryTrait>::T> where &'a MultiLineString<T>: 'b
Source§type LineType<'b> = Line<<&'a MultiLineString<T> as GeometryTrait>::T>
where
&'a MultiLineString<T>: 'b
type LineType<'b> = Line<<&'a MultiLineString<T> as GeometryTrait>::T> where &'a MultiLineString<T>: 'b
Source§fn dim(&self) -> Dimensions
fn dim(&self) -> Dimensions
Source§fn as_type(
&self,
) -> GeometryType<'_, Point<T>, LineString<T>, Polygon<T>, MultiPoint<T>, MultiLineString<T>, MultiPolygon<T>, GeometryCollection<T>, Rect<T>, Triangle<T>, Line<T>>
fn as_type( &self, ) -> GeometryType<'_, Point<T>, LineString<T>, Polygon<T>, MultiPoint<T>, MultiLineString<T>, MultiPolygon<T>, GeometryCollection<T>, Rect<T>, Triangle<T>, Line<T>>
GeometryType enum, which allows for downcasting to a specific
typeSource§impl<T> GeometryTrait for MultiLineString<T>where
T: CoordNum,
impl<T> GeometryTrait for MultiLineString<T>where
T: CoordNum,
Source§type PointType<'b> = Point<<MultiLineString<T> as GeometryTrait>::T>
where
MultiLineString<T>: 'b
type PointType<'b> = Point<<MultiLineString<T> as GeometryTrait>::T> where MultiLineString<T>: 'b
Source§type LineStringType<'b> = LineString<<MultiLineString<T> as GeometryTrait>::T>
where
MultiLineString<T>: 'b
type LineStringType<'b> = LineString<<MultiLineString<T> as GeometryTrait>::T> where MultiLineString<T>: 'b
Source§type PolygonType<'b> = Polygon<<MultiLineString<T> as GeometryTrait>::T>
where
MultiLineString<T>: 'b
type PolygonType<'b> = Polygon<<MultiLineString<T> as GeometryTrait>::T> where MultiLineString<T>: 'b
Source§type MultiPointType<'b> = MultiPoint<<MultiLineString<T> as GeometryTrait>::T>
where
MultiLineString<T>: 'b
type MultiPointType<'b> = MultiPoint<<MultiLineString<T> as GeometryTrait>::T> where MultiLineString<T>: 'b
Source§type MultiLineStringType<'b> = MultiLineString<<MultiLineString<T> as GeometryTrait>::T>
where
MultiLineString<T>: 'b
type MultiLineStringType<'b> = MultiLineString<<MultiLineString<T> as GeometryTrait>::T> where MultiLineString<T>: 'b
Source§type MultiPolygonType<'b> = MultiPolygon<<MultiLineString<T> as GeometryTrait>::T>
where
MultiLineString<T>: 'b
type MultiPolygonType<'b> = MultiPolygon<<MultiLineString<T> as GeometryTrait>::T> where MultiLineString<T>: 'b
Source§type GeometryCollectionType<'b> = GeometryCollection<<MultiLineString<T> as GeometryTrait>::T>
where
MultiLineString<T>: 'b
type GeometryCollectionType<'b> = GeometryCollection<<MultiLineString<T> as GeometryTrait>::T> where MultiLineString<T>: 'b
Source§type RectType<'b> = Rect<<MultiLineString<T> as GeometryTrait>::T>
where
MultiLineString<T>: 'b
type RectType<'b> = Rect<<MultiLineString<T> as GeometryTrait>::T> where MultiLineString<T>: 'b
Source§type TriangleType<'b> = Triangle<<MultiLineString<T> as GeometryTrait>::T>
where
MultiLineString<T>: 'b
type TriangleType<'b> = Triangle<<MultiLineString<T> as GeometryTrait>::T> where MultiLineString<T>: 'b
Source§type LineType<'b> = Line<<MultiLineString<T> as GeometryTrait>::T>
where
MultiLineString<T>: 'b
type LineType<'b> = Line<<MultiLineString<T> as GeometryTrait>::T> where MultiLineString<T>: 'b
Source§fn dim(&self) -> Dimensions
fn dim(&self) -> Dimensions
Source§fn as_type(
&self,
) -> GeometryType<'_, Point<T>, LineString<T>, Polygon<T>, MultiPoint<T>, MultiLineString<T>, MultiPolygon<T>, GeometryCollection<T>, Rect<T>, Triangle<T>, Line<T>>
fn as_type( &self, ) -> GeometryType<'_, Point<T>, LineString<T>, Polygon<T>, MultiPoint<T>, MultiLineString<T>, MultiPolygon<T>, GeometryCollection<T>, Rect<T>, Triangle<T>, Line<T>>
GeometryType enum, which allows for downcasting to a specific
typeSource§impl<T> Hash for MultiLineString<T>
impl<T> Hash for MultiLineString<T>
Source§impl<'a, T> IntoIterator for &'a MultiLineString<T>where
T: CoordNum,
impl<'a, T> IntoIterator for &'a MultiLineString<T>where
T: CoordNum,
Source§type Item = &'a LineString<T>
type Item = &'a LineString<T>
Source§type IntoIter = Iter<'a, LineString<T>>
type IntoIter = Iter<'a, LineString<T>>
Source§fn into_iter(self) -> <&'a MultiLineString<T> as IntoIterator>::IntoIter
fn into_iter(self) -> <&'a MultiLineString<T> as IntoIterator>::IntoIter
Source§impl<'a, T> IntoIterator for &'a mut MultiLineString<T>where
T: CoordNum,
impl<'a, T> IntoIterator for &'a mut MultiLineString<T>where
T: CoordNum,
Source§type Item = &'a mut LineString<T>
type Item = &'a mut LineString<T>
Source§type IntoIter = IterMut<'a, LineString<T>>
type IntoIter = IterMut<'a, LineString<T>>
Source§fn into_iter(self) -> <&'a mut MultiLineString<T> as IntoIterator>::IntoIter
fn into_iter(self) -> <&'a mut MultiLineString<T> as IntoIterator>::IntoIter
Source§impl<T> IntoIterator for MultiLineString<T>where
T: CoordNum,
impl<T> IntoIterator for MultiLineString<T>where
T: CoordNum,
Source§type Item = LineString<T>
type Item = LineString<T>
Source§type IntoIter = IntoIter<LineString<T>>
type IntoIter = IntoIter<LineString<T>>
Source§fn into_iter(self) -> <MultiLineString<T> as IntoIterator>::IntoIter
fn into_iter(self) -> <MultiLineString<T> as IntoIterator>::IntoIter
Source§impl<'a, T> MultiLineStringTrait for &'a MultiLineString<T>where
T: CoordNum,
impl<'a, T> MultiLineStringTrait for &'a MultiLineString<T>where
T: CoordNum,
Source§type InnerLineStringType<'b> = &'a LineString<<&'a MultiLineString<T> as GeometryTrait>::T>
where
&'a MultiLineString<T>: 'b
type InnerLineStringType<'b> = &'a LineString<<&'a MultiLineString<T> as GeometryTrait>::T> where &'a MultiLineString<T>: 'b
Source§fn num_line_strings(&self) -> usize
fn num_line_strings(&self) -> usize
Source§unsafe fn line_string_unchecked(
&self,
i: usize,
) -> <&'a MultiLineString<T> as MultiLineStringTrait>::InnerLineStringType<'_>
unsafe fn line_string_unchecked( &self, i: usize, ) -> <&'a MultiLineString<T> as MultiLineStringTrait>::InnerLineStringType<'_>
Source§fn line_strings(&self) -> impl DoubleEndedIterator + ExactSizeIterator
fn line_strings(&self) -> impl DoubleEndedIterator + ExactSizeIterator
Source§fn line_string(&self, i: usize) -> Option<Self::InnerLineStringType<'_>>
fn line_string(&self, i: usize) -> Option<Self::InnerLineStringType<'_>>
Source§impl<T> MultiLineStringTrait for MultiLineString<T>where
T: CoordNum,
impl<T> MultiLineStringTrait for MultiLineString<T>where
T: CoordNum,
Source§type InnerLineStringType<'a> = &'a LineString<<MultiLineString<T> as GeometryTrait>::T>
where
MultiLineString<T>: 'a
type InnerLineStringType<'a> = &'a LineString<<MultiLineString<T> as GeometryTrait>::T> where MultiLineString<T>: 'a
Source§fn num_line_strings(&self) -> usize
fn num_line_strings(&self) -> usize
Source§unsafe fn line_string_unchecked(
&self,
i: usize,
) -> <MultiLineString<T> as MultiLineStringTrait>::InnerLineStringType<'_>
unsafe fn line_string_unchecked( &self, i: usize, ) -> <MultiLineString<T> as MultiLineStringTrait>::InnerLineStringType<'_>
Source§fn line_strings(&self) -> impl DoubleEndedIterator + ExactSizeIterator
fn line_strings(&self) -> impl DoubleEndedIterator + ExactSizeIterator
Source§fn line_string(&self, i: usize) -> Option<Self::InnerLineStringType<'_>>
fn line_string(&self, i: usize) -> Option<Self::InnerLineStringType<'_>>
Source§impl<T> PartialEq for MultiLineString<T>
impl<T> PartialEq for MultiLineString<T>
Source§impl<T> ToWkt<T> for MultiLineString<T>
§Examples
use geo_types::{line_string, LineString, MultiLineString};
use wkt::ToWkt;
let line_string_1: LineString<f64> = line_string![(x: 1., y: 2.), (x: 3., y: 4.), (x: 5., y: 6.)];
let line_string_2: LineString<f64> = line_string![(x: 7., y: 8.), (x: 9., y: 0.)];
let multi_line_string: MultiLineString<f64> = MultiLineString::new(vec![line_string_1, line_string_2]);
assert_eq!(multi_line_string.wkt_string(), "MULTILINESTRING((1 2,3 4,5 6),(7 8,9 0))");
impl<T> ToWkt<T> for MultiLineString<T>
§Examples
use geo_types::{line_string, LineString, MultiLineString};
use wkt::ToWkt;
let line_string_1: LineString<f64> = line_string![(x: 1., y: 2.), (x: 3., y: 4.), (x: 5., y: 6.)];
let line_string_2: LineString<f64> = line_string![(x: 7., y: 8.), (x: 9., y: 0.)];
let multi_line_string: MultiLineString<f64> = MultiLineString::new(vec![line_string_1, line_string_2]);
assert_eq!(multi_line_string.wkt_string(), "MULTILINESTRING((1 2,3 4,5 6),(7 8,9 0))");Source§impl<T> TryFrom<Geometry<T>> for MultiLineString<T>where
T: CoordNum,
Convert a Geometry enum into its inner type.
impl<T> TryFrom<Geometry<T>> for MultiLineString<T>where
T: CoordNum,
Convert a Geometry enum into its inner type.
Fails if the enum case does not match the type you are trying to convert it to.
Source§impl<T> TryFrom<Wkt<T>> for MultiLineString<T>where
T: CoordNum,
Fallibly convert this WKT primitive into this geo_types primitive
impl<T> TryFrom<Wkt<T>> for MultiLineString<T>where
T: CoordNum,
Fallibly convert this WKT primitive into this geo_types primitive
Source§impl<T> TryFromWkt<T> for MultiLineString<T>
impl<T> TryFromWkt<T> for MultiLineString<T>
type Error = Error
Source§fn try_from_wkt_str(
wkt_str: &str,
) -> Result<MultiLineString<T>, <MultiLineString<T> as TryFromWkt<T>>::Error>
fn try_from_wkt_str( wkt_str: &str, ) -> Result<MultiLineString<T>, <MultiLineString<T> as TryFromWkt<T>>::Error>
Source§fn try_from_wkt_reader(
wkt_reader: impl Read,
) -> Result<MultiLineString<T>, <MultiLineString<T> as TryFromWkt<T>>::Error>
fn try_from_wkt_reader( wkt_reader: impl Read, ) -> Result<MultiLineString<T>, <MultiLineString<T> as TryFromWkt<T>>::Error>
impl<T> Eq for MultiLineString<T>
impl<T> StructuralPartialEq for MultiLineString<T>where
T: CoordNum,
Auto Trait Implementations§
impl<T> Freeze for MultiLineString<T>
impl<T> RefUnwindSafe for MultiLineString<T>where
T: RefUnwindSafe,
impl<T> Send for MultiLineString<T>where
T: Send,
impl<T> Sync for MultiLineString<T>where
T: Sync,
impl<T> Unpin for MultiLineString<T>where
T: Unpin,
impl<T> UnwindSafe for MultiLineString<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T, G> ToGeoGeometry<T> for Gwhere
T: CoordNum,
G: GeometryTrait<T = T>,
impl<T, G> ToGeoGeometry<T> for Gwhere
T: CoordNum,
G: GeometryTrait<T = T>,
Source§impl<T, G> ToGeoMultiLineString<T> for Gwhere
T: CoordNum,
G: MultiLineStringTrait<T = T>,
impl<T, G> ToGeoMultiLineString<T> for Gwhere
T: CoordNum,
G: MultiLineStringTrait<T = T>,
Source§fn to_multi_line_string(&self) -> MultiLineString<T>
fn to_multi_line_string(&self) -> MultiLineString<T>
MultiLineString.