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

Creates a new RouteNonMatch value with the given HTTP status.

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.

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.

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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.