Trait Service

Source
pub trait Service<Request> {
    type Response;
    type Error;
    type Future: Future<Output = Result<Self::Response, Self::Error>>;

    // Required method
    fn call(&self, request: Request) -> Self::Future;
}
Expand description

请求响应模型,表示一个接收请求并返回响应的异步函数。

Required Associated Types§

Source

type Response

服务返回的响应。

Source

type Error

服务产生的错误。

Source

type Future: Future<Output = Result<Self::Response, Self::Error>>

异步返回的响应。

Required Methods§

Source

fn call(&self, request: Request) -> Self::Future

处理请求并异步返回响应。

Implementations on Foreign Types§

Source§

impl<'a, S, Request> Service<Request> for &'a S
where S: Service<Request> + 'a + ?Sized,

Source§

type Response = <S as Service<Request>>::Response

Source§

type Error = <S as Service<Request>>::Error

Source§

type Future = <S as Service<Request>>::Future

Source§

fn call(&self, request: Request) -> <&'a S as Service<Request>>::Future

Source§

impl<'a, S, Request> Service<Request> for &'a mut S
where S: Service<Request> + 'a + ?Sized,

Source§

type Response = <S as Service<Request>>::Response

Source§

type Error = <S as Service<Request>>::Error

Source§

type Future = <S as Service<Request>>::Future

Source§

fn call(&self, request: Request) -> <&'a mut S as Service<Request>>::Future

Source§

impl<S, Request> Service<Request> for Box<S>
where S: Service<Request> + ?Sized,

Source§

type Response = <S as Service<Request>>::Response

Source§

type Error = <S as Service<Request>>::Error

Source§

type Future = <S as Service<Request>>::Future

Source§

fn call(&self, request: Request) -> <Box<S> as Service<Request>>::Future

Source§

impl<S, Request> Service<Request> for Rc<S>
where S: Service<Request> + ?Sized,

Source§

type Response = <S as Service<Request>>::Response

Source§

type Error = <S as Service<Request>>::Error

Source§

type Future = <S as Service<Request>>::Future

Source§

fn call(&self, request: Request) -> <Rc<S> as Service<Request>>::Future

Implementors§

Source§

impl<F, Req, Res, Err, Fut> Service<Req> for ServiceFn<F>
where F: Fn(Req) -> Fut, Fut: Future<Output = Result<Res, Err>>,

Source§

type Response = Res

Source§

type Error = Err

Source§

type Future = Fut

Source§

impl<Req, Res, Err> Service<Req> for BoxCloneService<Req, Res, Err>

Source§

type Response = Res

Source§

type Error = Err

Source§

type Future = Pin<Box<dyn Future<Output = Result<Res, Err>>>>

Source§

impl<Req, Res, Err> Service<Req> for BoxService<Req, Res, Err>

Source§

type Response = Res

Source§

type Error = Err

Source§

type Future = Pin<Box<dyn Future<Output = Result<Res, Err>>>>

Source§

impl<Req, Res, Err> Service<Req> for RcService<Req, Res, Err>

Source§

type Response = Res

Source§

type Error = Err

Source§

type Future = Pin<Box<dyn Future<Output = Result<Res, Err>>>>

Source§

impl<S, F, R1, R2> Service<R1> for MapRequest<S, F>
where S: Service<R2>, F: Fn(R1) -> R2,

Source§

type Response = <S as Service<R2>>::Response

Source§

type Error = <S as Service<R2>>::Error

Source§

type Future = <S as Service<R2>>::Future

Source§

impl<S, F, Req, Err> Service<Req> for MapErr<S, F>
where S: Service<Req>, F: FnOnce(<S as Service<Req>>::Error) -> Err + Clone,

Source§

type Response = <S as Service<Req>>::Response

Source§

type Error = Err

Source§

type Future = MapErrFuture<<S as Service<Req>>::Future, F>

Source§

impl<S, F, Req, Res> Service<Req> for MapResponse<S, F>
where S: Service<Req>, F: FnOnce(<S as Service<Req>>::Response) -> Res + Clone,

Source§

type Response = Res

Source§

type Error = <S as Service<Req>>::Error

Source§

type Future = MapResponseFuture<<S as Service<Req>>::Future, F>

Source§

impl<S, F, Req, Res, Err> Service<Req> for MapResult<S, F>
where S: Service<Req>, F: FnOnce(Result<<S as Service<Req>>::Response, <S as Service<Req>>::Error>) -> Result<Res, Err> + Clone,

Source§

type Response = Res

Source§

type Error = Err

Source§

type Future = MapResultFuture<<S as Service<Req>>::Future, F>

Source§

impl<S, F, Req, Res, Err, Fut> Service<Req> for MapFuture<S, F>
where S: Service<Req>, F: Fn(<S as Service<Req>>::Future) -> Fut, Fut: Future<Output = Result<Res, Err>>,

Source§

type Response = Res

Source§

type Error = Err

Source§

type Future = Fut

Source§

impl<S, F, Req, Res, Err, Fut> Service<Req> for Then<S, F>
where S: Service<Req>, F: FnOnce(Result<<S as Service<Req>>::Response, <S as Service<Req>>::Error>) -> Fut + Clone, Fut: Future<Output = Result<Res, Err>>,

Source§

type Response = Res

Source§

type Error = Err

Source§

type Future = ThenFuture<<S as Service<Req>>::Future, Fut, F>

Source§

impl<S, F, Req, Res, Fut> Service<Req> for AndThen<S, F>
where S: Service<Req>, F: FnOnce(<S as Service<Req>>::Response) -> Fut + Clone, Fut: Future<Output = Result<Res, <S as Service<Req>>::Error>>,

Source§

type Response = Res

Source§

type Error = <S as Service<Req>>::Error

Source§

type Future = AndThenFuture<<S as Service<Req>>::Future, Fut, F>