Service

Trait Service 

Source
pub trait Service<Req = ()> {
    type Response;
    type Error;

    // Required method
    fn call(
        &self,
        req: Req,
    ) -> impl Future<Output = Result<Self::Response, Self::Error>>;
}
Expand description

Trait for simulate Fn<(&Self, Arg)> -> impl Future<Output = Result<T, E>> + '_. The function call come from stateful type that can be referenced within returned opaque future.

Required Associated Types§

Source

type Response

The Ok part of output future.

Source

type Error

The Err part of output future.

Required Methods§

Source

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

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<S, Req> Service<Req> for Pin<S>
where S: Deref, S::Target: Service<Req>,

Source§

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

Source§

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

Source§

async fn call(&self, req: Req) -> Result<Self::Response, Self::Error>

Source§

impl<T, S, E> Service<Result<S, E>> for Option<T>
where T: Service<Result<S, E>, Error = E>,

Source§

type Response = Pipeline<S, <T as Service<Result<S, E>>>::Response>

Source§

type Error = <T as Service<Result<S, E>>>::Error

Source§

async fn call(&self, res: Result<S, E>) -> Result<Self::Response, Self::Error>

Implementors§

Source§

impl<F, Req, Res, Err> Service<Req> for FnService<F>
where F: AsyncFn(Req) -> Result<Res, Err>,

Source§

type Response = Res

Source§

type Error = Err

Source§

impl<F, S, Req> Service<Req> for Pipeline<F, S>
where F: Service<Req>, S: Service<Req, Response = F::Response, Error = F::Error>,

Source§

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

Source§

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

Source§

impl<F, T, Arg> Service<Arg> for PipelineT<F, T, BuildEnclosed>
where F: Service<Arg>, T: Service<Result<F::Response, F::Error>>,

Source§

type Response = <T as Service<Result<<F as Service<Arg>>::Response, <F as Service<Arg>>::Error>>>::Response

Source§

type Error = <T as Service<Result<<F as Service<Arg>>::Response, <F as Service<Arg>>::Error>>>::Error

Source§

impl<S, E> Service<Result<S, E>> for Group<S, E>

Source§

impl<S, E> Service<Result<S, E>> for UncheckedReady

Source§

type Response = UncheckedReadyService<S>

Source§

type Error = E

Source§

impl<S, E, F> Service<Result<S, E>> for AsyncFn<F>
where F: Clone,

Source§

type Response = Pipeline<S, F, AsyncFn>

Source§

type Error = E

Source§

impl<S, Req, F, Err> Service<Req> for PipelineT<S, F, MapErr>
where S: Service<Req>, F: Fn(S::Error) -> Err,

Source§

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

Source§

type Error = Err

Source§

impl<S, Req, F, Res> Service<Req> for PipelineT<S, F, Map>
where S: Service<Req>, F: Fn(S::Response) -> Res,

Source§

type Response = Res

Source§

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

Source§

impl<S, Req, F, Res, Err> Service<Req> for PipelineT<S, F, AsyncFn>
where F: AsyncFn(&S, Req) -> Result<Res, Err>,

Source§

type Response = Res

Source§

type Error = Err

Source§

impl<S, Req, S1> Service<Req> for PipelineT<S, S1, AndThen>
where S: Service<Req>, S1: Service<S::Response, Error = S::Error>,

Source§

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

Source§

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

Source§

impl<SF, Arg, SF1> Service<Arg> for PipelineT<SF, SF1, BuildAndThen>
where SF: Service<Arg>, Arg: Clone, SF1: Service<Arg>, SF1::Error: From<SF::Error>,

Source§

type Response = Pipeline<<SF as Service<Arg>>::Response, <SF1 as Service<Arg>>::Response, AndThen>

Source§

type Error = <SF1 as Service<Arg>>::Error