#[non_exhaustive]pub enum RouteError {
NonFinitePoint,
RingTooShort,
BarrierTooShort,
TooManyVertices {
supplied: usize,
budget: usize,
lower_bound: f64,
},
Undecidable,
}Expand description
A malformed query, as opposed to an honest “no route”.
PartialEq but not Eq: RouteError::TooManyVertices carries a
float bound, and float equality is not reflexive.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
NonFinitePoint
A coordinate was NaN or infinite.
RingTooShort
A ring had fewer than three vertices.
BarrierTooShort
A barrier had fewer than two vertices, so it bounds no segment.
TooManyVertices
The input exceeds the vertex budget. Refused, not truncated.
Carries a PROVEN lower bound rather than only a complaint. A refusal and a bound are different facts: a caller that cannot afford the exact route can still report a minimum, defer, or escalate, where a bare error forces it to drop the query or reimplement routing (kernel#92).
The added fields make this a breaking change: Eq is gone because
the bound is a float, and an exhaustive struct variant gained
fields. Both are recorded against the 0.3.0 minor bump rather than
worked around — marking the variant #[non_exhaustive] now would
itself be breaking, so it buys nothing here.
Fields
lower_bound: f64Straight-line distance between the endpoints.
A lower bound on EVERY route between them, not an estimate: a polyline is at least as long as the straight line joining its ends, and obstacles only lengthen it. Both endpoints are already proven inside the free-space region when this is reported, so the bound applies to a route that could exist.
Being a bound, it is safe to act on: no admissible route is shorter. It says nothing about whether a route EXISTS.
Undecidable
The exact predicate could not decide a sidedness question.
Distinct from every Unreachable variant: this is the kernel
declining to guess, not a statement about the geometry.
Trait Implementations§
Source§impl Clone for RouteError
impl Clone for RouteError
Source§fn clone(&self) -> RouteError
fn clone(&self) -> RouteError
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RouteError
impl Debug for RouteError
Source§impl From<RouteError> for FarthestError
impl From<RouteError> for FarthestError
Source§fn from(error: RouteError) -> FarthestError
fn from(error: RouteError) -> FarthestError
Source§impl From<RouteError> for MapError
impl From<RouteError> for MapError
Source§fn from(error: RouteError) -> MapError
fn from(error: RouteError) -> MapError
Source§impl From<RouteError> for SkeletonError
impl From<RouteError> for SkeletonError
Source§fn from(error: RouteError) -> SkeletonError
fn from(error: RouteError) -> SkeletonError
Source§impl PartialEq for RouteError
impl PartialEq for RouteError
impl Copy for RouteError
impl StructuralPartialEq for RouteError
Auto Trait Implementations§
impl Freeze for RouteError
impl RefUnwindSafe for RouteError
impl Send for RouteError
impl Sync for RouteError
impl Unpin for RouteError
impl UnwindSafe for RouteError
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
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