Struct gotham::router::RouteNonMatch

source ·
pub struct RouteNonMatch { /* private fields */ }
Expand description

The error type used for a non-matching route, as returned by RouteMatcher::is_match. Multiple values of this type can be combined by matchers that are wrapping other matchers, using the intersection / union methods. The data within is used by the Router to create a Response when no routes were successfully matched.

#[derive(Clone)]
struct MyRouteMatcher;

impl RouteMatcher for MyRouteMatcher {
    fn is_match(&self, state: &State) -> Result<(), RouteNonMatch> {
        match state.borrow::<Method>() {
            &Method::GET => Ok(()),
            _ => Err(RouteNonMatch::new(StatusCode::METHOD_NOT_ALLOWED)
                .with_allow_list(&[Method::GET])),
        }
    }
}

Implementations§

source§

impl RouteNonMatch

source

pub fn new(status: StatusCode) -> RouteNonMatch

Creates a new RouteNonMatch value with the given HTTP status.

source

pub fn with_allow_list(self, allow: &[Method]) -> RouteNonMatch

Adds an allow list to a RouteNonMatch. Typically this is used with a 405 Method Not Allowed status code, so the Router can accurately populate the Allow header in the response. It must be populated by any RouteMatcher which restricts the HTTP method.

source

pub fn intersection(self, other: RouteNonMatch) -> RouteNonMatch

Takes the intersection of two RouteNonMatch values, producing a single result. This is intended for use in cases where two RouteMatcher instances with a logical AND connection have both indicated a non-match, and their results need to be aggregated.

This is typically for Gotham internal use, but may be useful for implementors of matchers which wrap other RouteMatcher instances. See the AndRouteMatcher implementation (in gotham::router::route::matcher::and) for an example.

source

pub fn union(self, other: RouteNonMatch) -> RouteNonMatch

Takes the union of two RouteNonMatch values, producing a single result. This is intended for use in cases where two RouteMatcher instances with a logical OR connection have both indicated a non-match, and their results need to be aggregated.

This is typically for Gotham internal use, but may be useful for implementors of matchers which wrap other RouteMatcher instances. See the Node::select_route implementation (in gotham::router::tree) for an example.

Trait Implementations§

source§

impl Clone for RouteNonMatch

source§

fn clone(&self) -> RouteNonMatch

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 From<RouteNonMatch> for StatusCode

source§

fn from(val: RouteNonMatch) -> StatusCode

Converts to this type from the input type.

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

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> ToOwned for T
where T: Clone,

§

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

§

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

§

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.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more