pub struct ServiceChainFactory<Sf, St, Req> { /* private fields */ }Expand description
Service factory builder
Implementations§
Source§impl<Sf: ServiceFactory<St, Req>, St, Req> ServiceChainFactory<Sf, St, Req>
impl<Sf: ServiceFactory<St, Req>, St, Req> ServiceChainFactory<Sf, St, Req>
Sourcepub fn and_then<U>(
self,
factory: impl IntoServiceFactory<U, St, Sf::Res>,
) -> ServiceChainFactory<AndThenFactory<Sf, U>, St, Req>
pub fn and_then<U>( self, factory: impl IntoServiceFactory<U, St, Sf::Res>, ) -> ServiceChainFactory<AndThenFactory<Sf, U>, St, Req>
Call another service after call to this one has resolved successfully.
Sourcepub fn apply<U>(
self,
tr: U,
) -> ServiceChainFactory<ApplyMiddleware<U, Sf>, St, Req>where
U: Middleware<Sf::Service, St>,
pub fn apply<U>(
self,
tr: U,
) -> ServiceChainFactory<ApplyMiddleware<U, Sf>, St, Req>where
U: Middleware<Sf::Service, St>,
Apply Middleware to current service factory.
Short version of apply(middleware, factory(...))
Sourcepub fn apply_fn<F, In, Out, Err>(
self,
f: F,
) -> ServiceChainFactory<ApplyFactory<F, Sf, St, Req, In, Out, Err>, St, In>
pub fn apply_fn<F, In, Out, Err>( self, f: F, ) -> ServiceChainFactory<ApplyFactory<F, Sf, St, Req, In, Out, Err>, St, In>
Apply function middleware to current service factory.
Short version of apply_fn_factory(factory(...), fn)
Sourcepub fn then<F, U>(
self,
factory: F,
) -> ServiceChainFactory<ThenFactory<Sf, U>, St, Req>
pub fn then<F, U>( self, factory: F, ) -> ServiceChainFactory<ThenFactory<Sf, U>, St, Req>
Create chain factory to chain on a computation for when a call to the
service finished, passing the result of the call to the next
service U.
Note that this function consumes the receiving factory and returns a wrapped version of it.
Sourcepub fn map<F, Res>(
self,
f: F,
) -> ServiceChainFactory<MapFactory<F, Sf, Res>, St, Req>
pub fn map<F, Res>( self, f: F, ) -> ServiceChainFactory<MapFactory<F, Sf, Res>, St, Req>
Map this service’s output to a different type, returning a new service of the resulting type.
Sourcepub fn map_err<F, E>(
self,
f: F,
) -> ServiceChainFactory<MapErrFactory<F, Sf, E>, St, Req>
pub fn map_err<F, E>( self, f: F, ) -> ServiceChainFactory<MapErrFactory<F, Sf, E>, St, Req>
Map this service’s error to a different error.
Sourcepub fn map_init_err<F, E>(
self,
f: F,
) -> ServiceChainFactory<MapInitErr<F, Sf, E>, St, Req>
pub fn map_init_err<F, E>( self, f: F, ) -> ServiceChainFactory<MapInitErr<F, Sf, E>, St, Req>
Map this factory’s init error to a different error, returning a new factory.
Sourcepub fn readiness<F>(
self,
ready: F,
) -> ServiceChainFactory<AndThenFactory<Sf, FnReadiness<F, Sf::Error>>, St, Req>
pub fn readiness<F>( self, ready: F, ) -> ServiceChainFactory<AndThenFactory<Sf, FnReadiness<F, Sf::Error>>, St, Req>
Add custom readiness check to the service factory.
Sourcepub fn shutdown<F>(
self,
sh: F,
) -> ServiceChainFactory<AndThenFactory<Sf, FnShutdown<F, Sf::Error>>, St, Req>
pub fn shutdown<F>( self, sh: F, ) -> ServiceChainFactory<AndThenFactory<Sf, FnShutdown<F, Sf::Error>>, St, Req>
Add custom shutdown callback to the service factory.
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§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: ServiceFactory<St, Req>, St, Req> ServiceFactory<St, Req> for ServiceChainFactory<Sf, St, Req>
impl<Sf: ServiceFactory<St, Req>, St, Req> ServiceFactory<St, Req> for ServiceChainFactory<Sf, 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::Service, Sf::InitError>
async fn create(&self, st: &St) -> Result<Sf::Service, Sf::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,
Source§fn map<F, Res>(
self,
f: F,
) -> ServiceChainFactory<MapFactory<F, Self, Res>, St, Req>
fn map<F, Res>( self, f: F, ) -> ServiceChainFactory<MapFactory<F, Self, Res>, St, Req>
Source§fn map_err<F, E>(
self,
f: F,
) -> ServiceChainFactory<MapErrFactory<F, Self, E>, St, Req>
fn map_err<F, E>( self, f: F, ) -> ServiceChainFactory<MapErrFactory<F, Self, E>, St, Req>
Source§fn map_init_err<F, E>(
self,
f: F,
) -> ServiceChainFactory<MapInitErr<F, Self, E>, St, Req>
fn map_init_err<F, E>( self, f: F, ) -> ServiceChainFactory<MapInitErr<F, Self, E>, St, Req>
Source§fn and_then<U, F>(
self,
f: F,
) -> ServiceChainFactory<AndThenFactory<Self, U>, St, Req>where
Self: Sized,
U: ServiceFactory<St, Self::Res, Error = Self::Error, InitError = Self::InitError>,
F: IntoServiceFactory<U, St, Self::Res>,
fn and_then<U, F>(
self,
f: F,
) -> ServiceChainFactory<AndThenFactory<Self, U>, St, Req>where
Self: Sized,
U: ServiceFactory<St, Self::Res, Error = Self::Error, InitError = Self::InitError>,
F: IntoServiceFactory<U, St, Self::Res>,
Auto Trait Implementations§
impl<Sf, St, Req> Freeze for ServiceChainFactory<Sf, St, Req>
impl<Sf, St, Req> RefUnwindSafe for ServiceChainFactory<Sf, St, Req>
impl<Sf, St, Req> Send for ServiceChainFactory<Sf, St, Req>
impl<Sf, St, Req> Sync for ServiceChainFactory<Sf, St, Req>
impl<Sf, St, Req> Unpin for ServiceChainFactory<Sf, St, Req>
impl<Sf, St, Req> UnsafeUnpin for ServiceChainFactory<Sf, St, Req>
impl<Sf, St, Req> UnwindSafe for ServiceChainFactory<Sf, St, Req>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Sf, St, Req> IntoServiceFactory<Sf, St, Req> for Sfwhere
Sf: ServiceFactory<St, Req>,
impl<Sf, St, Req> IntoServiceFactory<Sf, St, Req> for Sfwhere
Sf: ServiceFactory<St, Req>,
Source§fn into_factory(self) -> Sf
fn into_factory(self) -> Sf
Self to a ServiceFactory