Trait Responder

Source
pub trait Responder<Req> {
    type Response;
    type Error;

    // Required method
    fn respond(
        self,
        req: Req,
    ) -> impl Future<Output = Result<Self::Response, Self::Error>>;

    // Provided method
    fn map(self, res: Self::Response) -> Result<Self::Response, Self::Error>
       where Self: Sized { ... }
}
Expand description

Make Response with ownership of Req. The Output type is what returns from handler_service function.

Required Associated Types§

Required Methods§

Source

fn respond( self, req: Req, ) -> impl Future<Output = Result<Self::Response, Self::Error>>

generate response from given request.

Provided Methods§

Source

fn map(self, res: Self::Response) -> Result<Self::Response, Self::Error>
where Self: Sized,

map response type and mutate it’s state. default to pass through without any modification.

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.

Implementations on Foreign Types§

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for &'static str

Source§

type Response = Response<ResponseBody>

Source§

type Error = Error

Source§

async fn respond( self, ctx: WebContext<'r, C, B>, ) -> Result<Self::Response, Self::Error>

Source§

fn map(self, res: Self::Response) -> Result<Self::Response, Self::Error>

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for (HeaderName, HeaderValue)

Source§

type Response = Response<ResponseBody>

Source§

type Error = Error

Source§

async fn respond( self, ctx: WebContext<'r, C, B>, ) -> Result<Self::Response, Self::Error>

Source§

fn map(self, res: Self::Response) -> Result<Self::Response, Self::Error>

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for Cow<'static, str>

Source§

type Response = Response<ResponseBody>

Source§

type Error = Error

Source§

async fn respond( self, ctx: WebContext<'r, C, B>, ) -> Result<Self::Response, Self::Error>

Source§

fn map(self, res: Self::Response) -> Result<Self::Response, Self::Error>

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for Value

Source§

type Response = Response<ResponseBody>

Source§

type Error = Error

Source§

async fn respond( self, ctx: WebContext<'r, C, B>, ) -> Result<Self::Response, Self::Error>

Source§

fn map(self, res: Self::Response) -> Result<Self::Response, Self::Error>

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for Box<str>

Source§

type Response = Response<ResponseBody>

Source§

type Error = Error

Source§

async fn respond( self, ctx: WebContext<'r, C, B>, ) -> Result<Self::Response, Self::Error>

Source§

fn map(self, res: Self::Response) -> Result<Self::Response, Self::Error>

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for String

Source§

type Response = Response<ResponseBody>

Source§

type Error = Error

Source§

async fn respond( self, ctx: WebContext<'r, C, B>, ) -> Result<Self::Response, Self::Error>

Source§

fn map(self, res: Self::Response) -> Result<Self::Response, Self::Error>

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for Vec<(HeaderName, HeaderValue)>

Source§

type Response = Response<ResponseBody>

Source§

type Error = Error

Source§

async fn respond( self, ctx: WebContext<'r, C, B>, ) -> Result<Self::Response, Self::Error>

Source§

fn map(self, res: Self::Response) -> Result<Self::Response, Self::Error>

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for Vec<u8>

Source§

type Response = Response<ResponseBody>

Source§

type Error = Infallible

Source§

async fn respond( self, ctx: WebContext<'r, C, B>, ) -> Result<Self::Response, Self::Error>

Source§

fn map(self, res: Self::Response) -> Result<Self::Response, Self::Error>

Source§

impl<'r, C, B, T, Res, Err, E> Responder<WebContext<'r, C, B>> for Result<T, E>
where T: for<'r2> Responder<WebContext<'r2, C, B>, Response = Res, Error = Err>, Error: From<E> + From<Err>,

Source§

type Response = Res

Source§

type Error = Error

Source§

async fn respond( self, ctx: WebContext<'r, C, B>, ) -> Result<Self::Response, Self::Error>

Source§

impl<'r, C, B, const N: usize> Responder<WebContext<'r, C, B>> for [(HeaderName, HeaderValue); N]

Source§

type Response = Response<ResponseBody>

Source§

type Error = Error

Source§

async fn respond( self, ctx: WebContext<'r, C, B>, ) -> Result<Self::Response, Self::Error>

Source§

fn map(self, res: Self::Response) -> Result<Self::Response, Self::Error>

Source§

impl<Req, A> Responder<Req> for (A,)
where A: Responder<Req>,

Source§

type Response = <A as Responder<Req>>::Response

Source§

type Error = <A as Responder<Req>>::Error

Source§

async fn respond( self, req: Req, ) -> Result<<(A,) as Responder<Req>>::Response, <(A,) as Responder<Req>>::Error>

Source§

fn map( self, res: <(A,) as Responder<Req>>::Response, ) -> Result<<(A,) as Responder<Req>>::Response, <(A,) as Responder<Req>>::Error>

Source§

impl<Req, A, B> Responder<Req> for (A, B)
where A: Responder<Req>, B: Responder<Req, Response = <A as Responder<Req>>::Response>, <A as Responder<Req>>::Error: From<<B as Responder<Req>>::Error>,

Source§

type Response = <A as Responder<Req>>::Response

Source§

type Error = <A as Responder<Req>>::Error

Source§

async fn respond( self, req: Req, ) -> Result<<(A, B) as Responder<Req>>::Response, <(A, B) as Responder<Req>>::Error>

Source§

fn map( self, res: <(A, B) as Responder<Req>>::Response, ) -> Result<<(A, B) as Responder<Req>>::Response, <(A, B) as Responder<Req>>::Error>

Source§

impl<Req, A, B, C> Responder<Req> for (A, B, C)
where A: Responder<Req>, B: Responder<Req, Response = <A as Responder<Req>>::Response>, <A as Responder<Req>>::Error: From<<B as Responder<Req>>::Error> + From<<C as Responder<Req>>::Error>, C: Responder<Req, Response = <A as Responder<Req>>::Response>,

Source§

type Response = <A as Responder<Req>>::Response

Source§

type Error = <A as Responder<Req>>::Error

Source§

async fn respond( self, req: Req, ) -> Result<<(A, B, C) as Responder<Req>>::Response, <(A, B, C) as Responder<Req>>::Error>

Source§

fn map( self, res: <(A, B, C) as Responder<Req>>::Response, ) -> Result<<(A, B, C) as Responder<Req>>::Response, <(A, B, C) as Responder<Req>>::Error>

Source§

impl<Req, A, B, C, D> Responder<Req> for (A, B, C, D)
where A: Responder<Req>, B: Responder<Req, Response = <A as Responder<Req>>::Response>, <A as Responder<Req>>::Error: From<<B as Responder<Req>>::Error> + From<<C as Responder<Req>>::Error> + From<<D as Responder<Req>>::Error>, C: Responder<Req, Response = <A as Responder<Req>>::Response>, D: Responder<Req, Response = <A as Responder<Req>>::Response>,

Source§

type Response = <A as Responder<Req>>::Response

Source§

type Error = <A as Responder<Req>>::Error

Source§

async fn respond( self, req: Req, ) -> Result<<(A, B, C, D) as Responder<Req>>::Response, <(A, B, C, D) as Responder<Req>>::Error>

Source§

fn map( self, res: <(A, B, C, D) as Responder<Req>>::Response, ) -> Result<<(A, B, C, D) as Responder<Req>>::Response, <(A, B, C, D) as Responder<Req>>::Error>

Source§

impl<Req, A, B, C, D, E> Responder<Req> for (A, B, C, D, E)
where A: Responder<Req>, B: Responder<Req, Response = <A as Responder<Req>>::Response>, <A as Responder<Req>>::Error: From<<B as Responder<Req>>::Error> + From<<C as Responder<Req>>::Error> + From<<D as Responder<Req>>::Error> + From<<E as Responder<Req>>::Error>, C: Responder<Req, Response = <A as Responder<Req>>::Response>, D: Responder<Req, Response = <A as Responder<Req>>::Response>, E: Responder<Req, Response = <A as Responder<Req>>::Response>,

Source§

type Response = <A as Responder<Req>>::Response

Source§

type Error = <A as Responder<Req>>::Error

Source§

async fn respond( self, req: Req, ) -> Result<<(A, B, C, D, E) as Responder<Req>>::Response, <(A, B, C, D, E) as Responder<Req>>::Error>

Source§

fn map( self, res: <(A, B, C, D, E) as Responder<Req>>::Response, ) -> Result<<(A, B, C, D, E) as Responder<Req>>::Response, <(A, B, C, D, E) as Responder<Req>>::Error>

Source§

impl<Req, A, B, C, D, E, F> Responder<Req> for (A, B, C, D, E, F)
where A: Responder<Req>, B: Responder<Req, Response = <A as Responder<Req>>::Response>, <A as Responder<Req>>::Error: From<<B as Responder<Req>>::Error> + From<<C as Responder<Req>>::Error> + From<<D as Responder<Req>>::Error> + From<<E as Responder<Req>>::Error> + From<<F as Responder<Req>>::Error>, C: Responder<Req, Response = <A as Responder<Req>>::Response>, D: Responder<Req, Response = <A as Responder<Req>>::Response>, E: Responder<Req, Response = <A as Responder<Req>>::Response>, F: Responder<Req, Response = <A as Responder<Req>>::Response>,

Implementors§

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for BoxBody

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for Bytes

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for BytesMut

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for Error

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for ErrorStatus

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for HeaderMap

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for StatusCode

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for Redirect

Source§

impl<'r, C, B> Responder<WebContext<'r, C, B>> for WebSocket<B>
where B: BodyStream + 'static,

Source§

impl<'r, C, B, K> Responder<WebContext<'r, C, B>> for CookieJar<K>

Source§

impl<'r, C, B, ResB> Responder<WebContext<'r, C, B>> for ResponseBody<ResB>

Source§

impl<'r, C, B, ResB> Responder<WebContext<'r, C, B>> for WebResponse<ResB>

Source§

impl<'r, C, B, T> Responder<WebContext<'r, C, B>> for Form<T>
where T: Serialize,

Source§

impl<'r, C, B, T> Responder<WebContext<'r, C, B>> for Html<T>
where T: Into<ResponseBody>,

Source§

impl<'r, C, B, T> Responder<WebContext<'r, C, B>> for Json<T>
where T: Serialize,

Source§

impl<'r, C, B, T> Responder<WebContext<'r, C, B>> for Text<T>
where T: Into<ResponseBody>,

Source§

impl<R, F, S> Responder<R> for Pipeline<F, S>
where F: Responder<R>, S: Responder<R, Response = <F as Responder<R>>::Response>, <F as Responder<R>>::Error: From<<S as Responder<R>>::Error>,

Source§

type Response = <F as Responder<R>>::Response

Source§

type Error = <F as Responder<R>>::Error