Enum RouteError

Source
#[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
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

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

§supplied: usize

Vertices the caller supplied.

§budget: usize

The budget that was applied, so the caller can raise it.

§lower_bound: f64

Straight-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

Source§

fn clone(&self) -> RouteError

Returns a copy 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 Debug for RouteError

Source§

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

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

impl From<RouteError> for FarthestError

Source§

fn from(error: RouteError) -> FarthestError

Converts to this type from the input type.
Source§

impl From<RouteError> for MapError

Source§

fn from(error: RouteError) -> MapError

Converts to this type from the input type.
Source§

impl From<RouteError> for SkeletonError

Source§

fn from(error: RouteError) -> SkeletonError

Converts to this type from the input type.
Source§

impl PartialEq for RouteError

Source§

fn eq(&self, other: &RouteError) -> 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 Copy for RouteError

Source§

impl StructuralPartialEq for RouteError

Auto Trait Implementations§

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,