#[non_exhaustive]pub enum ArcPolygonDefect {
Ring {
ring: ArcRingRef,
error: OverlayError,
},
SelfContact {
ring: ArcRingRef,
edges: [usize; 2],
at: DVec2,
},
BoundaryOverlap {
rings: [ArcRingRef; 2],
},
DisconnectedInterior {
rings: Vec<ArcRingRef>,
},
NestingUndecided {
error: OverlayError,
},
HoleOutsideOuter {
hole: usize,
},
HolesOverlap {
holes: [usize; 2],
},
Clearance {
edges: [(ArcRingRef, usize); 2],
lower_bound: f64,
undecided: bool,
},
InvalidClearance {
clearance: f64,
},
}Expand description
Why an ArcPolygon does not bound a valid region.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Ring
A validate_arc_ring refusal of one ring.
SelfContact
Two edges of one ring share a point other than the vertex their ring
order puts between them: a crossing, pinch, tangency or fold-back.
edges ascending; at is the first such point, rounded once.
BoundaryOverlap
Two rings share a stretch of boundary. rings ascending.
Fields
rings: [ArcRingRef; 2]DisconnectedInterior
Contacts between rings cut the interior into separate pieces: the
rings and the contact points form a cycle. rings ascending, every
ring of the cut component.
Fields
rings: Vec<ArcRingRef>NestingUndecided
The exact arrangement that decides nesting refused the rings, so nesting is undecided and the polygon is not called valid.
Fields
error: OverlayErrorHoleOutsideOuter
Part of a hole lies outside the outer ring.
HolesOverlap
Two holes’ interiors meet (crossing or nested). holes ascending.
Clearance
Two edges are closer than the requested clearance
(ArcCheckOptions::with_clearance): their distance has a local
minimum strictly between zero and it away from their meeting points,
or they form an exact cusp (they meet and leave in the same
direction). The neighbourhood of a meeting point at a nonzero angle (a
narrow wedge) is not reported. edges are (ring, edge)
pairs, ascending. lower_bound is a certified lower bound on their
distance. undecided is false when the exact test proved the
distance is below the clearance, and true when it could not decide
and the pair is reported rather than cleared.
InvalidClearance
The requested clearance is not a finite, non-negative distance, so no clearance was checked.
Trait Implementations§
Source§impl Clone for ArcPolygonDefect
impl Clone for ArcPolygonDefect
Source§fn clone(&self) -> ArcPolygonDefect
fn clone(&self) -> ArcPolygonDefect
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ArcPolygonDefect
impl Debug for ArcPolygonDefect
Source§impl PartialEq for ArcPolygonDefect
impl PartialEq for ArcPolygonDefect
impl StructuralPartialEq for ArcPolygonDefect
Auto Trait Implementations§
impl Freeze for ArcPolygonDefect
impl RefUnwindSafe for ArcPolygonDefect
impl Send for ArcPolygonDefect
impl Sync for ArcPolygonDefect
impl Unpin for ArcPolygonDefect
impl UnsafeUnpin for ArcPolygonDefect
impl UnwindSafe for ArcPolygonDefect
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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