pub struct ServiceChainFactory<Sf, St, Req> { /* private fields */ }Expand description
A builder for composing service factories and combinators.
Implementations§
Source§impl<Sf, St, Req> ServiceChainFactory<Sf, St, Req>where
Sf: ServiceFactory<St, Req>,
impl<Sf, St, Req> ServiceChainFactory<Sf, St, Req>where
Sf: ServiceFactory<St, Req>,
Sourcepub fn and_then<U>(
self,
factory: impl IntoServiceFactory<U, St, <Sf as ServiceFactory<St, Req>>::Res>,
) -> ServiceChainFactory<AndThenFactory<Sf, U>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
U: ServiceFactory<St, <Sf as ServiceFactory<St, Req>>::Res, Error = <Sf as ServiceFactory<St, Req>>::Error, InitError = <Sf as ServiceFactory<St, Req>>::InitError>,
pub fn and_then<U>(
self,
factory: impl IntoServiceFactory<U, St, <Sf as ServiceFactory<St, Req>>::Res>,
) -> ServiceChainFactory<AndThenFactory<Sf, U>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
U: ServiceFactory<St, <Sf as ServiceFactory<St, Req>>::Res, Error = <Sf as ServiceFactory<St, Req>>::Error, InitError = <Sf as ServiceFactory<St, Req>>::InitError>,
Chains another factory after this factory’s services.
Each created service passes its response to the next service as its request. If the first service returns an error, the next service is not called.
Sourcepub fn apply<U>(
self,
tr: U,
) -> ServiceChainFactory<ApplyMiddleware<U, Sf>, St, Req>
pub fn apply<U>( self, tr: U, ) -> ServiceChainFactory<ApplyMiddleware<U, Sf>, St, Req>
Applies middleware to this service factory.
This is shorthand for calling crate::apply on the chained factory.
Sourcepub fn apply_fn<F, In, Out, Err>(
self,
f: F,
) -> ServiceChainFactory<ApplyFactory<F, Sf, St, Req, In, Out, Err>, St, In>where
F: AsyncFn(In, &ApplyCtx<'_, <Sf as ServiceFactory<St, Req>>::Service, St, Req>) -> Result<Out, Err> + Clone,
Err: From<<Sf as ServiceFactory<St, Req>>::Error>,
pub fn apply_fn<F, In, Out, Err>(
self,
f: F,
) -> ServiceChainFactory<ApplyFactory<F, Sf, St, Req, In, Out, Err>, St, In>where
F: AsyncFn(In, &ApplyCtx<'_, <Sf as ServiceFactory<St, Req>>::Service, St, Req>) -> Result<Out, Err> + Clone,
Err: From<<Sf as ServiceFactory<St, Req>>::Error>,
Applies an asynchronous function as middleware to this service factory.
This is shorthand for calling crate::apply_fn_factory on the chained
factory.
Sourcepub fn then<F, U>(
self,
factory: F,
) -> ServiceChainFactory<ThenFactory<Sf, U>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
F: IntoServiceFactory<U, St, Result<<Sf as ServiceFactory<St, Req>>::Res, <Sf as ServiceFactory<St, Req>>::Error>>,
U: ServiceFactory<St, Result<<Sf as ServiceFactory<St, Req>>::Res, <Sf as ServiceFactory<St, Req>>::Error>, Error = <Sf as ServiceFactory<St, Req>>::Error, InitError = <Sf as ServiceFactory<St, Req>>::InitError>,
pub fn then<F, U>(
self,
factory: F,
) -> ServiceChainFactory<ThenFactory<Sf, U>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
F: IntoServiceFactory<U, St, Result<<Sf as ServiceFactory<St, Req>>::Res, <Sf as ServiceFactory<St, Req>>::Error>>,
U: ServiceFactory<St, Result<<Sf as ServiceFactory<St, Req>>::Res, <Sf as ServiceFactory<St, Req>>::Error>, Error = <Sf as ServiceFactory<St, Req>>::Error, InitError = <Sf as ServiceFactory<St, Req>>::InitError>,
Chains a factory whose services receive the preceding service’s complete
Result.
Sourcepub fn map<F, Res>(
self,
f: F,
) -> ServiceChainFactory<MapFactory<F, Sf, Res>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
F: Fn(<Sf as ServiceFactory<St, Req>>::Res) -> Res + Clone,
pub fn map<F, Res>(
self,
f: F,
) -> ServiceChainFactory<MapFactory<F, Sf, Res>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
F: Fn(<Sf as ServiceFactory<St, Req>>::Res) -> Res + Clone,
Maps responses produced by this factory’s services.
Sourcepub fn map_err<F, E>(
self,
f: F,
) -> ServiceChainFactory<MapErrFactory<F, Sf, E>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
F: Fn(<Sf as ServiceFactory<St, Req>>::Error) -> E + Clone,
pub fn map_err<F, E>(
self,
f: F,
) -> ServiceChainFactory<MapErrFactory<F, Sf, E>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
F: Fn(<Sf as ServiceFactory<St, Req>>::Error) -> E + Clone,
Maps errors produced by this factory’s services.
Sourcepub fn map_init_err<F, E>(
self,
f: F,
) -> ServiceChainFactory<MapInitErr<F, Sf, E>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
F: Fn(<Sf as ServiceFactory<St, Req>>::InitError) -> E + Clone,
pub fn map_init_err<F, E>(
self,
f: F,
) -> ServiceChainFactory<MapInitErr<F, Sf, E>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
F: Fn(<Sf as ServiceFactory<St, Req>>::InitError) -> E + Clone,
Maps this factory’s initialization error.
Sourcepub fn readiness<F>(
self,
ready: F,
) -> ServiceChainFactory<AndThenFactory<Sf, FnReadiness<F, <Sf as ServiceFactory<St, Req>>::Error>>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
F: AsyncFn(&St) -> Result<(), <Sf as ServiceFactory<St, Req>>::Error> + Clone,
pub fn readiness<F>(
self,
ready: F,
) -> ServiceChainFactory<AndThenFactory<Sf, FnReadiness<F, <Sf as ServiceFactory<St, Req>>::Error>>, St, Req>where
ServiceChainFactory<Sf, St, Req>: Sized,
F: AsyncFn(&St) -> Result<(), <Sf as ServiceFactory<St, Req>>::Error> + Clone,
Adds a custom readiness check to each created service.
The check runs after the wrapped service’s own readiness check succeeds; the service is ready only when both are ready.
Sourcepub fn shutdown<F>(
self,
sh: F,
) -> ServiceChainFactory<AndThenFactory<Sf, FnShutdown<F, <Sf as ServiceFactory<St, Req>>::Error>>, St, Req>
pub fn shutdown<F>( self, sh: F, ) -> ServiceChainFactory<AndThenFactory<Sf, FnShutdown<F, <Sf as ServiceFactory<St, Req>>::Error>>, St, Req>
Adds a shutdown callback to each created service.
Sourcepub async fn pipeline(
&self,
st: St,
) -> Result<Pipeline<Req, <Sf as ServiceFactory<St, Req>>::Res, <Sf as ServiceFactory<St, Req>>::Error>, <Sf as ServiceFactory<St, Req>>::InitError>where
Sf: 'static,
St: 'static,
Req: 'static,
pub async fn pipeline(
&self,
st: St,
) -> Result<Pipeline<Req, <Sf as ServiceFactory<St, Req>>::Res, <Sf as ServiceFactory<St, Req>>::Error>, <Sf as ServiceFactory<St, Req>>::InitError>where
Sf: 'static,
St: 'static,
Req: 'static,
Creates a service and wraps it with its state in a Pipeline.
Trait Implementations§
Source§impl<Sf, St, Req> Clone for ServiceChainFactory<Sf, St, Req>where
Sf: Clone,
impl<Sf, St, Req> Clone for ServiceChainFactory<Sf, St, Req>where
Sf: Clone,
Source§fn clone(&self) -> ServiceChainFactory<Sf, St, Req>
fn clone(&self) -> ServiceChainFactory<Sf, St, Req>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<Sf, St, Req> Debug for ServiceChainFactory<Sf, St, Req>where
Sf: Debug,
impl<Sf, St, Req> Debug for ServiceChainFactory<Sf, St, Req>where
Sf: Debug,
Source§impl<Sf, St, Req> ServiceFactory<St, Req> for ServiceChainFactory<Sf, St, Req>where
Sf: ServiceFactory<St, Req>,
impl<Sf, St, Req> ServiceFactory<St, Req> for ServiceChainFactory<Sf, St, Req>where
Sf: ServiceFactory<St, Req>,
Source§type Res = <Sf as ServiceFactory<St, Req>>::Res
type Res = <Sf as ServiceFactory<St, Req>>::Res
Source§type Error = <Sf as ServiceFactory<St, Req>>::Error
type Error = <Sf as ServiceFactory<St, Req>>::Error
Source§type Service = <Sf as ServiceFactory<St, Req>>::Service
type Service = <Sf as ServiceFactory<St, Req>>::Service
Service produced by this factory.Source§type InitError = <Sf as ServiceFactory<St, Req>>::InitError
type InitError = <Sf as ServiceFactory<St, Req>>::InitError
Source§async fn create(
&self,
st: &St,
) -> Result<<Sf as ServiceFactory<St, Req>>::Service, <Sf as ServiceFactory<St, Req>>::InitError>
async fn create( &self, st: &St, ) -> Result<<Sf as ServiceFactory<St, Req>>::Service, <Sf as ServiceFactory<St, Req>>::InitError>
Source§async fn pipeline(
&self,
st: St,
) -> Result<Pipeline<Req, Self::Res, Self::Error>, Self::InitError>where
Self: 'static,
St: 'static,
Req: 'static,
async fn pipeline(
&self,
st: St,
) -> Result<Pipeline<Req, Self::Res, Self::Error>, Self::InitError>where
Self: 'static,
St: 'static,
Req: 'static,
Pipeline.