#[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 more