Struct geo_types::MultiLineString
source · [−]pub struct MultiLineString<T: CoordNum>(pub Vec<LineString<T>>);
Expand description
A collection of
LineString
s. Can
be created from a Vec
of LineString
s or from an
Iterator which yields LineString
s. Iterating over this
object yields the component LineString
s.
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
LineString
s, 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 Point
s 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
sourceimpl<T: CoordNum> MultiLineString<T>
impl<T: CoordNum> MultiLineString<T>
sourcepub fn new(value: Vec<LineString<T>>) -> Self
pub fn new(value: Vec<LineString<T>>) -> Self
Instantiate Self from the raw content value
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>::new(vec![]).is_closed());
sourceimpl<T: CoordNum> MultiLineString<T>
impl<T: CoordNum> MultiLineString<T>
pub fn iter(&self) -> impl Iterator<Item = &LineString<T>>
pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut LineString<T>>
Trait Implementations
sourceimpl<T: Clone + CoordNum> Clone for MultiLineString<T>
impl<T: Clone + CoordNum> Clone for MultiLineString<T>
sourcefn clone(&self) -> MultiLineString<T>
fn clone(&self) -> MultiLineString<T>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<T: Debug + CoordNum> Debug for MultiLineString<T>
impl<T: Debug + CoordNum> Debug for MultiLineString<T>
sourceimpl<T: CoordNum, ILS: Into<LineString<T>>> From<ILS> for MultiLineString<T>
impl<T: CoordNum, ILS: Into<LineString<T>>> From<ILS> for MultiLineString<T>
sourceimpl<T: CoordNum> From<MultiLineString<T>> for Geometry<T>
impl<T: CoordNum> From<MultiLineString<T>> for Geometry<T>
sourcefn from(x: MultiLineString<T>) -> Self
fn from(x: MultiLineString<T>) -> Self
Converts to this type from the input type.
sourceimpl<T: CoordNum, ILS: Into<LineString<T>>> FromIterator<ILS> for MultiLineString<T>
impl<T: CoordNum, ILS: Into<LineString<T>>> FromIterator<ILS> for MultiLineString<T>
sourcefn from_iter<I: IntoIterator<Item = ILS>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = ILS>>(iter: I) -> Self
Creates a value from an iterator. Read more
sourceimpl<T: Hash + CoordNum> Hash for MultiLineString<T>
impl<T: Hash + CoordNum> Hash for MultiLineString<T>
sourceimpl<T: CoordNum> IntoIterator for MultiLineString<T>
impl<T: CoordNum> IntoIterator for MultiLineString<T>
type Item = LineString<T>
type Item = LineString<T>
The type of the elements being iterated over.
type IntoIter = IntoIter<LineString<T>>
type IntoIter = IntoIter<LineString<T>>
Which kind of iterator are we turning this into?
sourceimpl<'a, T: CoordNum> IntoIterator for &'a MultiLineString<T>
impl<'a, T: CoordNum> IntoIterator for &'a MultiLineString<T>
type Item = &'a LineString<T>
type Item = &'a LineString<T>
The type of the elements being iterated over.
type IntoIter = Iter<'a, LineString<T>>
type IntoIter = Iter<'a, LineString<T>>
Which kind of iterator are we turning this into?
sourceimpl<'a, T: CoordNum> IntoIterator for &'a mut MultiLineString<T>
impl<'a, T: CoordNum> IntoIterator for &'a mut MultiLineString<T>
type Item = &'a mut LineString<T>
type Item = &'a mut LineString<T>
The type of the elements being iterated over.
type IntoIter = IterMut<'a, LineString<T>>
type IntoIter = IterMut<'a, LineString<T>>
Which kind of iterator are we turning this into?
sourceimpl<T: PartialEq + CoordNum> PartialEq<MultiLineString<T>> for MultiLineString<T>
impl<T: PartialEq + CoordNum> PartialEq<MultiLineString<T>> for MultiLineString<T>
sourcefn eq(&self, other: &MultiLineString<T>) -> bool
fn eq(&self, other: &MultiLineString<T>) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &MultiLineString<T>) -> bool
fn ne(&self, other: &MultiLineString<T>) -> bool
This method tests for !=
.
sourceimpl<T: CoordNum> TryFrom<Geometry<T>> for MultiLineString<T>
impl<T: CoordNum> TryFrom<Geometry<T>> for MultiLineString<T>
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.
impl<T: Eq + CoordNum> Eq for MultiLineString<T>
impl<T: CoordNum> StructuralEq for MultiLineString<T>
impl<T: CoordNum> StructuralPartialEq for MultiLineString<T>
Auto Trait Implementations
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more