Struct geo::MultiPoint[][src]

pub struct MultiPoint<T>(pub Vec<Point<T>, Global>)
where
    T: CoordNum
;

A collection of Points. Can be created from a Vec of Points, or from an Iterator which yields Points. Iterating over this object yields the component Points.

Semantics

The interior and the boundary are the union of the interior and the boundary of the constituent points. In particular, the boundary of a MultiPoint is always empty.

Examples

Iterating over a MultiPoint yields the Points inside.

use geo_types::{MultiPoint, Point};
let points: MultiPoint<_> = vec![(0., 0.), (1., 2.)].into();
for point in points {
    println!("Point x = {}, y = {}", point.x(), point.y());
}

Implementations

impl<T> MultiPoint<T> where
    T: CoordNum
[src]

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

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

Trait Implementations

impl<T> AbsDiffEq<MultiPoint<T>> for MultiPoint<T> where
    T: AbsDiffEq<T, Epsilon = T> + CoordNum,
    <T as AbsDiffEq<T>>::Epsilon: Copy
[src]

type Epsilon = T

Used for specifying relative comparisons.

pub fn abs_diff_eq(
    &self,
    other: &MultiPoint<T>,
    epsilon: <MultiPoint<T> as AbsDiffEq<MultiPoint<T>>>::Epsilon
) -> bool
[src]

Equality assertion with an absolute limit.

Examples

use geo_types::MultiPoint;
use geo_types::point;

let a = MultiPoint(vec![point![x: 0., y: 0.], point![x: 10., y: 10.]]);
let b = MultiPoint(vec![point![x: 0., y: 0.], point![x: 10.001, y: 10.]]);

approx::abs_diff_eq!(a, b, epsilon=0.1);

impl<T> Area<T> for MultiPoint<T> where
    T: CoordNum
[src]

impl<T> BoundingRect<T> for MultiPoint<T> where
    T: CoordNum
[src]

type Output = Option<Rect<T>>

fn bounding_rect(&self) -> Self::Output[src]

Return the BoundingRect for a MultiPoint

impl<T> Centroid for MultiPoint<T> where
    T: GeoFloat
[src]

use geo::algorithm::centroid::Centroid;
use geo::{MultiPoint, Point};

let empty: Vec<Point<f64>> = Vec::new();
let empty_multi_points: MultiPoint<_> = empty.into();
assert_eq!(empty_multi_points.centroid(), None);

let points: MultiPoint<_> = vec![(5., 1.), (1., 3.), (3., 2.)].into();
assert_eq!(points.centroid(), Some(Point::new(3., 2.)));

type Output = Option<Point<T>>

impl<T> Clone for MultiPoint<T> where
    T: Clone + CoordNum
[src]

impl<F: GeoFloat> ClosestPoint<F, Point<F>> for MultiPoint<F>[src]

impl<T> ConcaveHull for MultiPoint<T> where
    T: GeoFloat + RTreeNum
[src]

type Scalar = T

impl<G, T> Contains<G> for MultiPoint<T> where
    T: CoordNum,
    Point<T>: Contains<G>, 
[src]

impl<T: GeoNum> Contains<MultiPoint<T>> for MultiPolygon<T>[src]

impl<T> ConvexHull for MultiPoint<T> where
    T: GeoNum
[src]

type Scalar = T

impl<T> CoordinatePosition for MultiPoint<T> where
    T: GeoNum
[src]

type Scalar = T

impl<'a, T: CoordNum + 'a> CoordsIter<'a> for MultiPoint<T>[src]

type Iter = Flatten<MapCoordsIter<'a, T, Iter<'a, Point<T>>, Point<T>>>

type ExteriorIter = Self::Iter

type Scalar = T

fn coords_count(&'a self) -> usize[src]

Return the number of coordinates in the MultiPoint.

impl<T> Debug for MultiPoint<T> where
    T: Debug + CoordNum
[src]

impl<T> Eq for MultiPoint<T> where
    T: Eq + CoordNum
[src]

impl<T> EuclideanDistance<T, MultiPoint<T>> for Point<T> where
    T: GeoFloat
[src]

fn euclidean_distance(&self, points: &MultiPoint<T>) -> T[src]

Minimum distance from a Point to a MultiPoint

impl<T> EuclideanDistance<T, Point<T>> for MultiPoint<T> where
    T: GeoFloat
[src]

fn euclidean_distance(&self, point: &Point<T>) -> T[src]

Minimum distance from a MultiPoint to a Point

impl<T, IP> From<IP> for MultiPoint<T> where
    T: CoordNum,
    IP: Into<Point<T>>, 
[src]

pub fn from(x: IP) -> MultiPoint<T>[src]

Convert a single Point (or something which can be converted to a Point) into a one-member MultiPoint

impl<T> From<MultiPoint<T>> for Geometry<T> where
    T: CoordNum
[src]

impl<T, IP> From<Vec<IP, Global>> for MultiPoint<T> where
    T: CoordNum,
    IP: Into<Point<T>>, 
[src]

pub fn from(v: Vec<IP, Global>) -> MultiPoint<T>[src]

Convert a Vec of Points (or Vec of things which can be converted to a Point) into a MultiPoint.

impl<T, IP> FromIterator<IP> for MultiPoint<T> where
    T: CoordNum,
    IP: Into<Point<T>>, 
[src]

pub fn from_iter<I>(iter: I) -> MultiPoint<T> where
    I: IntoIterator<Item = IP>, 
[src]

Collect the results of a Point iterator into a MultiPoint

impl<C: CoordNum> HasDimensions for MultiPoint<C>[src]

impl<T> Hash for MultiPoint<T> where
    T: Hash + CoordNum
[src]

impl<T, G> Intersects<G> for MultiPoint<T> where
    T: CoordNum,
    Point<T>: Intersects<G>, 
[src]

impl<T> Intersects<MultiPoint<T>> for Coordinate<T> where
    MultiPoint<T>: Intersects<Coordinate<T>>,
    T: CoordNum
[src]

impl<T> Intersects<MultiPoint<T>> for Line<T> where
    MultiPoint<T>: Intersects<Line<T>>,
    T: CoordNum
[src]

impl<T> Intersects<MultiPoint<T>> for Polygon<T> where
    MultiPoint<T>: Intersects<Polygon<T>>,
    T: CoordNum
[src]

impl<T> Intersects<MultiPoint<T>> for Rect<T> where
    MultiPoint<T>: Intersects<Rect<T>>,
    T: CoordNum
[src]

impl<'a, T> IntoIterator for &'a mut MultiPoint<T> where
    T: CoordNum
[src]

type Item = &'a mut Point<T>

The type of the elements being iterated over.

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

Which kind of iterator are we turning this into?

impl<T> IntoIterator for MultiPoint<T> where
    T: CoordNum
[src]

Iterate over the Points in this MultiPoint.

type Item = Point<T>

The type of the elements being iterated over.

type IntoIter = IntoIter<Point<T>, Global>

Which kind of iterator are we turning this into?

impl<'a, T> IntoIterator for &'a MultiPoint<T> where
    T: CoordNum
[src]

type Item = &'a Point<T>

The type of the elements being iterated over.

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

Which kind of iterator are we turning this into?

impl<T: CoordNum, NT: CoordNum> MapCoords<T, NT> for MultiPoint<T>[src]

type Output = MultiPoint<NT>

impl<T: CoordNum> MapCoordsInplace<T> for MultiPoint<T>[src]

impl<T> PartialEq<MultiPoint<T>> for MultiPoint<T> where
    T: PartialEq<T> + CoordNum
[src]

impl<F: GeoFloat> Relate<F, GeometryCollection<F>> for MultiPoint<F>[src]

impl<F: GeoFloat> Relate<F, Line<F>> for MultiPoint<F>[src]

impl<F: GeoFloat> Relate<F, LineString<F>> for MultiPoint<F>[src]

impl<F: GeoFloat> Relate<F, MultiLineString<F>> for MultiPoint<F>[src]

impl<F: GeoFloat> Relate<F, MultiPoint<F>> for Point<F>[src]

impl<F: GeoFloat> Relate<F, MultiPoint<F>> for Line<F>[src]

impl<F: GeoFloat> Relate<F, MultiPoint<F>> for LineString<F>[src]

impl<F: GeoFloat> Relate<F, MultiPoint<F>> for Polygon<F>[src]

impl<F: GeoFloat> Relate<F, MultiPoint<F>> for MultiPoint<F>[src]

impl<F: GeoFloat> Relate<F, MultiPoint<F>> for MultiLineString<F>[src]

impl<F: GeoFloat> Relate<F, MultiPoint<F>> for MultiPolygon<F>[src]

impl<F: GeoFloat> Relate<F, MultiPoint<F>> for Rect<F>[src]

impl<F: GeoFloat> Relate<F, MultiPoint<F>> for Triangle<F>[src]

impl<F: GeoFloat> Relate<F, MultiPoint<F>> for GeometryCollection<F>[src]

impl<F: GeoFloat> Relate<F, MultiPolygon<F>> for MultiPoint<F>[src]

impl<F: GeoFloat> Relate<F, Point<F>> for MultiPoint<F>[src]

impl<F: GeoFloat> Relate<F, Polygon<F>> for MultiPoint<F>[src]

impl<F: GeoFloat> Relate<F, Rect<F>> for MultiPoint<F>[src]

impl<F: GeoFloat> Relate<F, Triangle<F>> for MultiPoint<F>[src]

impl<T> RelativeEq<MultiPoint<T>> for MultiPoint<T> where
    T: AbsDiffEq<T, Epsilon = T> + CoordNum + RelativeEq<T>, 
[src]

pub fn relative_eq(
    &self,
    other: &MultiPoint<T>,
    epsilon: <MultiPoint<T> as AbsDiffEq<MultiPoint<T>>>::Epsilon,
    max_relative: <MultiPoint<T> as AbsDiffEq<MultiPoint<T>>>::Epsilon
) -> bool
[src]

Equality assertion within a relative limit.

Examples

use geo_types::MultiPoint;
use geo_types::point;

let a = MultiPoint(vec![point![x: 0., y: 0.], point![x: 10., y: 10.]]);
let b = MultiPoint(vec![point![x: 0., y: 0.], point![x: 10.001, y: 10.]]);

approx::assert_relative_eq!(a, b, max_relative=0.1)

impl<T> Rotate<T> for MultiPoint<T> where
    T: CoordFloat
[src]

fn rotate(&self, angle: T) -> Self[src]

Rotate the contained Points about their centroids by the given number of degrees

impl<T> StructuralEq for MultiPoint<T> where
    T: CoordNum
[src]

impl<T> StructuralPartialEq for MultiPoint<T> where
    T: CoordNum
[src]

impl<T> TryFrom<Geometry<T>> for MultiPoint<T> where
    T: CoordNum
[src]

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.

type Error = Error

The type returned in the event of a conversion error.

impl<T: CoordNum, NT: CoordNum> TryMapCoords<T, NT> for MultiPoint<T>[src]

type Output = MultiPoint<NT>

Auto Trait Implementations

impl<T> RefUnwindSafe for MultiPoint<T> where
    T: RefUnwindSafe

impl<T> Send for MultiPoint<T> where
    T: Send

impl<T> Sync for MultiPoint<T> where
    T: Sync

impl<T> Unpin for MultiPoint<T> where
    T: Unpin

impl<T> UnwindSafe for MultiPoint<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<'a, T, G> Extremes<'a, T> for G where
    T: CoordNum,
    G: CoordsIter<'a, Scalar = T>, 
[src]

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

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

impl<T, G> RotatePoint<T> for G where
    T: CoordFloat,
    G: MapCoords<T, T, Output = G>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

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

type Owned = T

The resulting type after obtaining ownership.

impl<T, G> Translate<T> for G where
    T: CoordNum,
    G: MapCoords<T, T, Output = G> + MapCoordsInplace<T>, 
[src]

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.