Polygon

Struct Polygon 

Source
pub struct Polygon<T = f64>
where T: CoordNum,
{ /* private fields */ }
Available on crate feature geo-types only.
Expand description

A bounded two-dimensional area.

A Polygon’s outer boundary (exterior ring) is represented by a LineString. It may contain zero or more holes (interior rings), also represented by LineStrings.

A Polygon can be created with the Polygon::new constructor or the polygon! macro.

§Semantics

The boundary of the polygon is the union of the boundaries of the exterior and interiors. The interior is all the points inside the polygon (not on the boundary).

The Polygon structure guarantees that all exterior and interior rings will be closed, such that the first and last Coord of each ring has the same value.

§Validity

  • The exterior and interior rings must be valid LinearRings (see LineString).

  • No two rings in the boundary may cross, and may intersect at a Point only as a tangent. In other words, the rings must be distinct, and for every pair of common points in two of the rings, there must be a neighborhood (a topological open set) around one that does not contain the other point.

  • The closure of the interior of the Polygon must equal the Polygon itself. For instance, the exterior may not contain a spike.

  • The interior of the polygon must be a connected point-set. That is, any two distinct points in the interior must admit a curve between these two that lies in the interior.

Refer to section 6.1.11.1 of the OGC-SFA for a formal definition of validity. Besides the closed LineString guarantee, the Polygon structure does not enforce validity at this time. For example, it is possible to construct a Polygon that has:

  • fewer than 3 coordinates per LineString ring
  • interior rings that intersect other interior rings
  • interior rings that extend beyond the exterior ring

§LineString closing operation

Some APIs on Polygon result in a closing operation on a LineString. The operation is as follows:

If a LineString’s first and last Coord have different values, a new Coord will be appended to the LineString with a value equal to the first Coord.

Implementations§

Source§

impl<T> Polygon<T>
where T: CoordNum,

Source

pub fn new(exterior: LineString<T>, interiors: Vec<LineString<T>>) -> Polygon<T>

Create a new Polygon with the provided exterior LineString ring and interior LineString rings.

Upon calling new, the exterior and interior LineString rings will be closed.

§Examples

Creating a Polygon with no interior rings:

use geo_types::{LineString, Polygon};

let polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![],
);

Creating a Polygon with an interior ring:

use geo_types::{LineString, Polygon};

let polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![LineString::from(vec![
        (0.1, 0.1),
        (0.9, 0.9),
        (0.9, 0.1),
        (0.1, 0.1),
    ])],
);

If the first and last Coords of the exterior or interior LineStrings no longer match, those LineStrings will be closed:

use geo_types::{coord, LineString, Polygon};

let mut polygon = Polygon::new(LineString::from(vec![(0., 0.), (1., 1.), (1., 0.)]), vec![]);

assert_eq!(
    polygon.exterior(),
    &LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.),])
);
Source

pub fn empty() -> Polygon<T>

Returns an empty Polygon.

geo represents an empty Polygon as one whose exterior is an empty LineString

Source

pub fn into_inner(self) -> (LineString<T>, Vec<LineString<T>>)

Consume the Polygon, returning the exterior LineString ring and a vector of the interior LineString rings.

§Examples
use geo_types::{LineString, Polygon};

let mut polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![LineString::from(vec![
        (0.1, 0.1),
        (0.9, 0.9),
        (0.9, 0.1),
        (0.1, 0.1),
    ])],
);

let (exterior, interiors) = polygon.into_inner();

assert_eq!(
    exterior,
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.),])
);

assert_eq!(
    interiors,
    vec![LineString::from(vec![
        (0.1, 0.1),
        (0.9, 0.9),
        (0.9, 0.1),
        (0.1, 0.1),
    ])]
);
Source

pub fn exterior(&self) -> &LineString<T>

Return a reference to the exterior LineString ring.

§Examples
use geo_types::{LineString, Polygon};

let exterior = LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]);

let polygon = Polygon::new(exterior.clone(), vec![]);

assert_eq!(polygon.exterior(), &exterior);
Source

pub fn exterior_mut<F>(&mut self, f: F)
where F: FnOnce(&mut LineString<T>),

Execute the provided closure f, which is provided with a mutable reference to the exterior LineString ring.

After the closure executes, the exterior LineString will be closed.

§Examples
use geo_types::{coord, LineString, Polygon};

let mut polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![],
);

polygon.exterior_mut(|exterior| {
    exterior.0[1] = coord! { x: 1., y: 2. };
});

assert_eq!(
    polygon.exterior(),
    &LineString::from(vec![(0., 0.), (1., 2.), (1., 0.), (0., 0.),])
);

If the first and last Coords of the exterior LineString no longer match, the LineString will be closed:

use geo_types::{coord, LineString, Polygon};

let mut polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![],
);

polygon.exterior_mut(|exterior| {
    exterior.0[0] = coord! { x: 0., y: 1. };
});

assert_eq!(
    polygon.exterior(),
    &LineString::from(vec![(0., 1.), (1., 1.), (1., 0.), (0., 0.), (0., 1.),])
);
Source

pub fn try_exterior_mut<F, E>(&mut self, f: F) -> Result<(), E>
where F: FnOnce(&mut LineString<T>) -> Result<(), E>,

Fallible alternative to exterior_mut.

Source

pub fn interiors(&self) -> &[LineString<T>]

Return a slice of the interior LineString rings.

§Examples
use geo_types::{coord, LineString, Polygon};

let interiors = vec![LineString::from(vec![
    (0.1, 0.1),
    (0.9, 0.9),
    (0.9, 0.1),
    (0.1, 0.1),
])];

let polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    interiors.clone(),
);

assert_eq!(interiors, polygon.interiors());
Source

pub fn interiors_mut<F>(&mut self, f: F)
where F: FnOnce(&mut [LineString<T>]),

Execute the provided closure f, which is provided with a mutable reference to the interior LineString rings.

After the closure executes, each of the interior LineStrings will be closed.

§Examples
use geo_types::{coord, LineString, Polygon};

let mut polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![LineString::from(vec![
        (0.1, 0.1),
        (0.9, 0.9),
        (0.9, 0.1),
        (0.1, 0.1),
    ])],
);

polygon.interiors_mut(|interiors| {
    interiors[0].0[1] = coord! { x: 0.8, y: 0.8 };
});

assert_eq!(
    polygon.interiors(),
    &[LineString::from(vec![
        (0.1, 0.1),
        (0.8, 0.8),
        (0.9, 0.1),
        (0.1, 0.1),
    ])]
);

If the first and last Coords of any interior LineString no longer match, those LineStrings will be closed:

use geo_types::{coord, LineString, Polygon};

let mut polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![LineString::from(vec![
        (0.1, 0.1),
        (0.9, 0.9),
        (0.9, 0.1),
        (0.1, 0.1),
    ])],
);

polygon.interiors_mut(|interiors| {
    interiors[0].0[0] = coord! { x: 0.1, y: 0.2 };
});

assert_eq!(
    polygon.interiors(),
    &[LineString::from(vec![
        (0.1, 0.2),
        (0.9, 0.9),
        (0.9, 0.1),
        (0.1, 0.1),
        (0.1, 0.2),
    ])]
);
Source

pub fn try_interiors_mut<F, E>(&mut self, f: F) -> Result<(), E>
where F: FnOnce(&mut [LineString<T>]) -> Result<(), E>,

Fallible alternative to interiors_mut.

Source

pub fn interiors_push(&mut self, new_interior: impl Into<LineString<T>>)

Add an interior ring to the Polygon.

The new LineString interior ring will be closed:

§Examples
use geo_types::{coord, LineString, Polygon};

let mut polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![],
);

assert_eq!(polygon.interiors().len(), 0);

polygon.interiors_push(vec![(0.1, 0.1), (0.9, 0.9), (0.9, 0.1)]);

assert_eq!(
    polygon.interiors(),
    &[LineString::from(vec![
        (0.1, 0.1),
        (0.9, 0.9),
        (0.9, 0.1),
        (0.1, 0.1),
    ])]
);
Source

pub fn num_rings(&self) -> usize

Count the total number of rings (interior and exterior) in the polygon

§Examples
use geo_types::{coord, LineString, Polygon};

let polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![],
);

assert_eq!(polygon.num_rings(), 1);

let polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![LineString::from(vec![(0.1, 0.1), (0.9, 0.9), (0.9, 0.1)])],
);

assert_eq!(polygon.num_rings(), 2);
Source

pub fn num_interior_rings(&self) -> usize

Count the number of interior rings in the polygon

§Examples
use geo_types::{coord, LineString, Polygon};

let polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![],
);

assert_eq!(polygon.num_interior_rings(), 0);

let polygon = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]),
    vec![LineString::from(vec![(0.1, 0.1), (0.9, 0.9), (0.9, 0.1)])],
);

assert_eq!(polygon.num_interior_rings(), 1);
Source§

impl<T> Polygon<T>
where T: CoordFloat + Signed,

Source

pub fn is_convex(&self) -> bool

👎Deprecated since 0.6.1: Please use geo::is_convex on poly.exterior() instead

Determine whether a Polygon is convex

Trait Implementations§

Source§

impl<T> Clone for Polygon<T>
where T: Clone + CoordNum,

Source§

fn clone(&self) -> Polygon<T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T> Debug for Polygon<T>
where T: CoordNum,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<T> From<Polygon<T>> for Geometry<T>
where T: CoordNum,

Source§

fn from(x: Polygon<T>) -> Geometry<T>

Converts to this type from the input type.
Source§

impl<T> From<Polygon<T>> for Polygon<T>
where T: CoordNum,

Source§

fn from(polygon: Polygon<T>) -> Polygon<T>

Convert from a WKT POLYGON to a geo_types::Polygon

Source§

impl<T> From<Rect<T>> for Polygon<T>
where T: CoordNum,

Source§

fn from(r: Rect<T>) -> Polygon<T>

Converts to this type from the input type.
Source§

impl<T> From<Triangle<T>> for Polygon<T>
where T: CoordNum,

Source§

fn from(t: Triangle<T>) -> Polygon<T>

Converts to this type from the input type.
Source§

impl<'a, T> GeometryTrait for &'a Polygon<T>
where T: CoordNum + 'a,

Source§

type T = T

The coordinate type of this geometry
Source§

type PointType<'b> = Point<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b

The type of each underlying Point, which implements PointTrait
Source§

type LineStringType<'b> = LineString<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b

The type of each underlying LineString, which implements LineStringTrait
Source§

type PolygonType<'b> = Polygon<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b

The type of each underlying Polygon, which implements PolygonTrait
Source§

type MultiPointType<'b> = MultiPoint<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b

The type of each underlying MultiPoint, which implements MultiPointTrait
Source§

type MultiLineStringType<'b> = MultiLineString<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b

The type of each underlying MultiLineString, which implements MultiLineStringTrait
Source§

type MultiPolygonType<'b> = MultiPolygon<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b

The type of each underlying MultiPolygon, which implements MultiPolygonTrait
Source§

type GeometryCollectionType<'b> = GeometryCollection<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b

The type of each underlying GeometryCollection, which implements GeometryCollectionTrait
Source§

type RectType<'b> = Rect<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b

The type of each underlying Rect, which implements RectTrait
Source§

type TriangleType<'b> = Triangle<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b

The type of each underlying Triangle, which implements TriangleTrait
Source§

type LineType<'b> = Line<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b

The type of each underlying Line, which implements LineTrait
Source§

fn dim(&self) -> Dimensions

The dimension of this geometry
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>>

Cast this geometry to a GeometryType enum, which allows for downcasting to a specific type
Source§

impl<T> GeometryTrait for Polygon<T>
where T: CoordNum,

Source§

type T = T

The coordinate type of this geometry
Source§

type PointType<'b> = Point<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b

The type of each underlying Point, which implements PointTrait
Source§

type LineStringType<'b> = LineString<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b

The type of each underlying LineString, which implements LineStringTrait
Source§

type PolygonType<'b> = Polygon<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b

The type of each underlying Polygon, which implements PolygonTrait
Source§

type MultiPointType<'b> = MultiPoint<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b

The type of each underlying MultiPoint, which implements MultiPointTrait
Source§

type MultiLineStringType<'b> = MultiLineString<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b

The type of each underlying MultiLineString, which implements MultiLineStringTrait
Source§

type MultiPolygonType<'b> = MultiPolygon<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b

The type of each underlying MultiPolygon, which implements MultiPolygonTrait
Source§

type GeometryCollectionType<'b> = GeometryCollection<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b

The type of each underlying GeometryCollection, which implements GeometryCollectionTrait
Source§

type RectType<'b> = Rect<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b

The type of each underlying Rect, which implements RectTrait
Source§

type TriangleType<'b> = Triangle<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b

The type of each underlying Triangle, which implements TriangleTrait
Source§

type LineType<'b> = Line<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'b

The type of each underlying Line, which implements LineTrait
Source§

fn dim(&self) -> Dimensions

The dimension of this geometry
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>>

Cast this geometry to a GeometryType enum, which allows for downcasting to a specific type
Source§

impl<T> Hash for Polygon<T>
where T: Hash + CoordNum,

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<T> PartialEq for Polygon<T>
where T: PartialEq + CoordNum,

Source§

fn eq(&self, other: &Polygon<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a, T> PolygonTrait for &'a Polygon<T>
where T: CoordNum,

Source§

type RingType<'b> = &'a LineString<<&'a Polygon<T> as GeometryTrait>::T> where &'a Polygon<T>: 'b

The coordinate type of this geometry The type of each underlying ring, which implements LineStringTrait
Source§

fn exterior(&self) -> Option<<&'a Polygon<T> as PolygonTrait>::RingType<'_>>

The exterior ring of the polygon
Source§

fn num_interiors(&self) -> usize

The number of interior rings in this Polygon
Source§

unsafe fn interior_unchecked( &self, i: usize, ) -> <&'a Polygon<T> as PolygonTrait>::RingType<'_>

Access to a specified interior ring in this Polygon Read more
Source§

fn interiors(&self) -> impl DoubleEndedIterator + ExactSizeIterator

An iterator of the interior rings of this Polygon
Source§

fn interior(&self, i: usize) -> Option<Self::RingType<'_>>

Access to a specified interior ring in this Polygon Will return None if the provided index is out of bounds
Source§

impl<T> PolygonTrait for Polygon<T>
where T: CoordNum,

Source§

type RingType<'a> = &'a LineString<<Polygon<T> as GeometryTrait>::T> where Polygon<T>: 'a

The coordinate type of this geometry The type of each underlying ring, which implements LineStringTrait
Source§

fn exterior(&self) -> Option<<Polygon<T> as PolygonTrait>::RingType<'_>>

The exterior ring of the polygon
Source§

fn num_interiors(&self) -> usize

The number of interior rings in this Polygon
Source§

unsafe fn interior_unchecked( &self, i: usize, ) -> <Polygon<T> as PolygonTrait>::RingType<'_>

Access to a specified interior ring in this Polygon Read more
Source§

fn interiors(&self) -> impl DoubleEndedIterator + ExactSizeIterator

An iterator of the interior rings of this Polygon
Source§

fn interior(&self, i: usize) -> Option<Self::RingType<'_>>

Access to a specified interior ring in this Polygon Will return None if the provided index is out of bounds
Source§

impl<T> ToWkt<T> for Polygon<T>
where T: CoordNum + Display,

§Examples

use geo_types::{polygon, Polygon};
use wkt::ToWkt;

let polygon: Polygon<f64> = polygon![(x: 0., y: 0.), (x: 4., y: 0.), (x: 2., y: 4.), (x: 0., y: 0.)];

assert_eq!(polygon.wkt_string(), "POLYGON((0 0,4 0,2 4,0 0))");
Source§

fn to_wkt(&self) -> Wkt<T>

Converts the value of self to an Wkt struct. Read more
Source§

fn write_wkt(&self, writer: impl Write) -> Result<(), Error>

Write a WKT string to a File, or anything else that implements Write. Read more
Source§

fn wkt_string(&self) -> String

Serialize as a WKT string Read more
Source§

impl<T> TryFrom<Geometry<T>> for Polygon<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§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from( geom: Geometry<T>, ) -> Result<Polygon<T>, <Polygon<T> as TryFrom<Geometry<T>>>::Error>

Performs the conversion.
Source§

impl<T> TryFrom<Wkt<T>> for Polygon<T>
where T: CoordNum,

Fallibly convert this WKT primitive into this geo_types primitive

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from( wkt: Wkt<T>, ) -> Result<Polygon<T>, <Polygon<T> as TryFrom<Wkt<T>>>::Error>

Performs the conversion.
Source§

impl<T> TryFromWkt<T> for Polygon<T>
where T: CoordNum + FromStr + Default,

Source§

type Error = Error

Source§

fn try_from_wkt_str( wkt_str: &str, ) -> Result<Polygon<T>, <Polygon<T> as TryFromWkt<T>>::Error>

Examples Read more
Source§

fn try_from_wkt_reader( wkt_reader: impl Read, ) -> Result<Polygon<T>, <Polygon<T> as TryFromWkt<T>>::Error>

Examples Read more
Source§

impl<T> Eq for Polygon<T>
where T: Eq + CoordNum,

Source§

impl<T> StructuralPartialEq for Polygon<T>
where T: CoordNum,

Auto Trait Implementations§

§

impl<T> Freeze for Polygon<T>

§

impl<T> RefUnwindSafe for Polygon<T>
where T: RefUnwindSafe,

§

impl<T> Send for Polygon<T>
where T: Send,

§

impl<T> Sync for Polygon<T>
where T: Sync,

§

impl<T> Unpin for Polygon<T>
where T: Unpin,

§

impl<T> UnwindSafe for Polygon<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, G> ToGeoGeometry<T> for G
where T: CoordNum, G: GeometryTrait<T = T>,

Source§

fn try_to_geometry(&self) -> Option<Geometry<T>>

Convert to a geo_types Geometry. Read more
Source§

fn to_geometry(&self) -> Geometry<T>

Convert to a geo_types Geometry. Read more
Source§

impl<T, G> ToGeoPolygon<T> for G
where T: CoordNum, G: PolygonTrait<T = T>,

Source§

fn to_polygon(&self) -> Polygon<T>

Convert to a geo_types Polygon.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more