[][src]Struct geo_types::MultiLineString

pub struct MultiLineString<T>(pub Vec<LineString<T>>)
where
    T: CoordinateType
;

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.

Implementations

impl<T: CoordinateType> MultiLineString<T>[src]

pub fn is_closed(&self) -> bool[src]

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(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(vec![closed_line_string.clone()]).is_closed());

// MultiLineString is not closed if *any* of it's LineStrings are not closed
assert!(!MultiLineString(vec![open_line_string, closed_line_string]).is_closed());

// An empty MultiLineString is closed
assert!(MultiLineString::<f32>(vec![]).is_closed());

impl<T: CoordinateType> MultiLineString<T>[src]

pub fn iter(&self) -> impl Iterator<Item = &LineString<T>>[src]

pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut LineString<T>>[src]

Trait Implementations

impl<T: Clone> Clone for MultiLineString<T> where
    T: CoordinateType
[src]

impl<T: Debug> Debug for MultiLineString<T> where
    T: CoordinateType
[src]

impl<T: Eq> Eq for MultiLineString<T> where
    T: CoordinateType
[src]

impl<T: CoordinateType, ILS: Into<LineString<T>>> From<ILS> for MultiLineString<T>[src]

impl<T: CoordinateType> From<MultiLineString<T>> for Geometry<T>[src]

impl<T: CoordinateType, ILS: Into<LineString<T>>> FromIterator<ILS> for MultiLineString<T>[src]

impl<T: Hash> Hash for MultiLineString<T> where
    T: CoordinateType
[src]

impl<T: CoordinateType> IntoIterator for MultiLineString<T>[src]

type Item = LineString<T>

The type of the elements being iterated over.

type IntoIter = IntoIter<LineString<T>>

Which kind of iterator are we turning this into?

impl<'a, T: CoordinateType> IntoIterator for &'a MultiLineString<T>[src]

type Item = &'a LineString<T>

The type of the elements being iterated over.

type IntoIter = Iter<'a, LineString<T>>

Which kind of iterator are we turning this into?

impl<'a, T: CoordinateType> IntoIterator for &'a mut MultiLineString<T>[src]

type Item = &'a mut LineString<T>

The type of the elements being iterated over.

type IntoIter = IterMut<'a, LineString<T>>

Which kind of iterator are we turning this into?

impl<T: PartialEq> PartialEq<MultiLineString<T>> for MultiLineString<T> where
    T: CoordinateType
[src]

impl<T> StructuralEq for MultiLineString<T> where
    T: CoordinateType
[src]

impl<T> StructuralPartialEq for MultiLineString<T> where
    T: CoordinateType
[src]

impl<T> TryFrom<Geometry<T>> for MultiLineString<T> where
    T: Float
[src]

type Error = FailedToConvertError

The type returned in the event of a conversion error.

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.