Trait MakeService
pub trait MakeService<Target, Request>: Sealed<(Target, Request)>
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
MakeService trait, and uses that new Service value to process inbound
requests on that new TCP stream.
This is essentially a trait alias for a Service of Services.
Associated Types
type Response;Responses given by the service
type Error;Errors produced by the service
type Service: Service<Request, Response = Self::Response, Error = Self::Error>;The
Servicevalue created by this factorytype MakeError;Errors produced while building a service.
type Future: Future<Output = Result<Self::Service, Self::MakeError>>;The future of the
Serviceinstance.
Required Methods
fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::MakeError>>Returns
Poll::Readywhen the factory is able to create more services.If the service is at capacity, then
Poll::Pendingis returned and the task is notified when the service becomes ready again. This function is expected to be called while on a task.fn make_service(&mut self, target: Target) -> Self::FutureCreate and return a new service value asynchronously.
Provided Methods
fn into_service(self) -> IntoService<Self, Request> where Self: Sized,Consume this
MakeServiceand convert it into aService.Example
use Infallible; use Service; use MakeService; use service_fn; #fn as_service(&mut self) -> AsService<'_, Self, Request> where Self: Sized,Convert this
MakeServiceinto aServicewithout consuming the originalMakeService.Example
use Infallible; use Service; use MakeService; use service_fn; #
Implementors
impl<M, S, Target, Request> MakeService<Target, Request> for AndThen<S, F> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for AsService<'a, M, Request> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for AsyncFilter<T, U> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Balance<D, Req> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for BoxCloneService<T, U, E> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for BoxCloneSyncService<T, U, E> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for BoxService<T, U, E> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Buffer<Req, F> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for ConcurrencyLimit<T> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Constant<T, M> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Either<A, B> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Filter<T, U> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for FutureService<F, S> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Hedge<S, P> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for IntoService<M, Request> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for LoadShed<S> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for M where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for MakeBalance<S, Req> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for MapErr<S, F> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for MapFuture<S, F> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for MapRequest<S, F> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for MapResponse<S, F> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for MapResult<S, F> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Optional<T> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for PeakEwma<S, C> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for PendingRequests<S, C> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for RateLimit<T> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Reconnect<M, Target> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Retry<P, S> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for ServiceFn<T> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Shared<S> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for SpawnReady<S> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Steer<S, F, Req> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Then<S, F> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for Timeout<T> where M: Service<Target, Response = S>, S: Service<Request>,impl<M, S, Target, Request> MakeService<Target, Request> for UnsyncBoxService<T, U, E> where M: Service<Target, Response = S>, S: Service<Request>,