Struct diesel_mysql_spatial::data_types::Polygon
source · [−]Expand description
A bounded two-dimensional area.
MySQL extension: The spatial reference system identifier (SRID) may identify the used coordinate system.
Fields
srid: SRIDgeom: Polygon<f64>Methods from Deref<Target = Polygon<f64>>
sourcepub fn exterior(&self) -> &LineString<T>
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);sourcepub fn exterior_mut<F>(&mut self, f: F) where
F: FnOnce(&mut LineString<T>),
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 Coordinates 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.),])
);sourcepub fn interiors(&self) -> &[LineString<T>]
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());sourcepub fn interiors_mut<F>(&mut self, f: F) where
F: FnOnce(&mut [LineString<T>]),
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 Coordinates 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),
])]
);sourcepub fn interiors_push(&mut self, new_interior: impl Into<LineString<T>>)
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),
])]
);Trait Implementations
sourceimpl From<BoundingBox> for Polygon
impl From<BoundingBox> for Polygon
sourcefn from(other: BoundingBox) -> Self
fn from(other: BoundingBox) -> Self
Converts to this type from the input type.
sourceimpl<__ST, __DB> FromSqlRow<__ST, __DB> for Polygon where
__DB: Backend,
Self: FromSql<__ST, __DB>,
impl<__ST, __DB> FromSqlRow<__ST, __DB> for Polygon where
__DB: Backend,
Self: FromSql<__ST, __DB>,
sourcefn build_from_row<R: Row<__DB>>(row: &mut R) -> Result<Self>
fn build_from_row<R: Row<__DB>>(row: &mut R) -> Result<Self>
See the trait documentation.
sourceconst FIELDS_NEEDED: usize = 1usize
const FIELDS_NEEDED: usize = 1usize
The number of fields that this type will consume. Must be equal to
the number of times you would call row.take() in build_from_row Read more
sourceimpl<__ST, __DB> Queryable<__ST, __DB> for Polygon where
__DB: Backend,
Self: FromSql<__ST, __DB>,
impl<__ST, __DB> Queryable<__ST, __DB> for Polygon where
__DB: Backend,
Self: FromSql<__ST, __DB>,
impl StructuralPartialEq for Polygon
Auto Trait Implementations
impl RefUnwindSafe for Polygon
impl Send for Polygon
impl Sync for Polygon
impl Unpin for Polygon
impl UnwindSafe for Polygon
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> IntoSql for T
impl<T> IntoSql for T
sourcefn into_sql<T>(self) -> Self::Expression where
Self: AsExpression<T>,
fn into_sql<T>(self) -> Self::Expression where
Self: AsExpression<T>,
Convert self to an expression for Diesel’s query builder. Read more
sourcefn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression where
&'a Self: AsExpression<T>,
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression where
&'a Self: AsExpression<T>,
Convert &self to an expression for Diesel’s query builder. 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