[][src]Struct gotham::router::non_match::RouteNonMatch

pub struct RouteNonMatch { /* fields omitted */ }

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

impl RouteNonMatch[src]

pub fn new(status: StatusCode) -> RouteNonMatch[src]

Creates a new RouteNonMatch value with the given HTTP status.

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

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.

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

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.

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

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

impl Clone for RouteNonMatch[src]

impl From<RouteNonMatch> for StatusCode[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

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