pub trait ServiceFactory {
type Request;
type Response;
type Error;
type Config;
type Service: Service<Request = Self::Request, Response = Self::Response, Error = Self::Error>;
type InitError;
type Future: Future<Output = Result<Self::Service, Self::InitError>>;
// Required method
fn new_service(&self, cfg: Self::Config) -> Self::Future;
// Provided methods
fn map<F, R>(self, f: F) -> MapServiceFactory<Self, F, R>
where Self: Sized,
F: FnMut(Self::Response) -> R + Clone { ... }
fn map_err<F, E>(self, f: F) -> MapErrServiceFactory<Self, F, E>
where Self: Sized,
F: Fn(Self::Error) -> E + Clone { ... }
fn map_init_err<F, E>(self, f: F) -> MapInitErr<Self, F, E>
where Self: Sized,
F: Fn(Self::InitError) -> E + Clone { ... }
}Expand description
Creates new Service values.
Acts as a service factory. This is useful for cases where new Service
values must be produced. One case is a TCP server listener. The listener
accepts new TCP streams, obtains a new Service value using the
ServiceFactory trait, and uses that new Service value to process inbound
requests on that new TCP stream.
Config is a service factory configuration type.
Required Associated Types§
Required Methods§
Sourcefn new_service(&self, cfg: Self::Config) -> Self::Future
fn new_service(&self, cfg: Self::Config) -> Self::Future
Create and return a new service value asynchronously.
Provided Methods§
Sourcefn map<F, R>(self, f: F) -> MapServiceFactory<Self, F, R>
fn map<F, R>(self, f: F) -> MapServiceFactory<Self, F, R>
Map this service’s output to a different type, returning a new service of the resulting type.
Sourcefn map_err<F, E>(self, f: F) -> MapErrServiceFactory<Self, F, E>
fn map_err<F, E>(self, f: F) -> MapErrServiceFactory<Self, F, E>
Map this service’s error to a different error, returning a new service.
Sourcefn map_init_err<F, E>(self, f: F) -> MapInitErr<Self, F, E>
fn map_init_err<F, E>(self, f: F) -> MapInitErr<Self, F, E>
Map this factory’s init error to a different error, returning a new service.