Trait Catch

Source
pub trait Catch: Clone {
    type Body: BufStream;
    type Future: Future<Item = Response<Self::Body>, Error = Error>;

    // Required method
    fn catch(&mut self, request: &Request<()>, error: Error) -> Self::Future;
}
Expand description

Handles an error generated by a resource method.

In the event that an error occurs while processing an HTTP request, implementations of Catch have the opportunity of gracefully handling the error. This usually means responding with a friendly error response.

For example, if the error is generated due to no routes matching the HTTP request, then a 404 response should be returned. If a route was matched, but the arguments were not satisfied, then a 400 response should be returned.

Required Associated Types§

Source

type Body: BufStream

The HTTP response body type

Source

type Future: Future<Item = Response<Self::Body>, Error = Error>

Future yielding the HTTP response.

Required Methods§

Source

fn catch(&mut self, request: &Request<()>, error: Error) -> Self::Future

Handles an error.

Implementations of Catch generate a friendly HTTP error response based on the provideed request and error.

See module level documentation for more details.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl Catch for DefaultCatch

Implements Catch by returning an HTTP response with the appropriate status code.

The HTTP response will include a basic error message in the response body.

Source§

impl<F, R, Body> Catch for FnCatch<F>
where F: Fn(&Request<()>, Error) -> R, R: IntoFuture<Item = Response<Body>, Error = Error>, Body: BufStream,

Source§

type Body = Body

Source§

type Future = <R as IntoFuture>::Future