OptionService

Struct OptionService 

Source
pub struct OptionService<M, S> { /* private fields */ }
Expand description

A middleware for an optional layer with merged error types.

The tower::util::Either middleware converts errors to BoxError, which can make it difficult to return to a concrete error type. This middleware allows the inner service to return a concrete error type, while the optional middleware must return an error type that can be converted to the inner service’s error type.

Trait Implementations§

Source§

impl<M: Clone, S: Clone> Clone for OptionService<M, S>

Source§

fn clone(&self) -> OptionService<M, S>

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<M: Debug, S: Debug> Debug for OptionService<M, S>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<M, S, Req, E> Service<Req> for OptionService<M, S>
where S: Service<Req, Error = E>, M: Service<Req, Response = S::Response>, M::Error: Into<E>,

Source§

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

Responses given by the service.
Source§

type Error = E

Errors produced by the service.
Source§

type Future = OptionServiceFuture<<M as Service<Req>>::Future, <S as Service<Req>>::Future>

The future response value.
Source§

fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Source§

fn call(&mut self, req: Req) -> Self::Future

Process the request and return the response asynchronously. Read more

Auto Trait Implementations§

§

impl<M, S> Freeze for OptionService<M, S>
where M: Freeze, S: Freeze,

§

impl<M, S> RefUnwindSafe for OptionService<M, S>

§

impl<M, S> Send for OptionService<M, S>
where M: Send, S: Send,

§

impl<M, S> Sync for OptionService<M, S>
where M: Sync, S: Sync,

§

impl<M, S> Unpin for OptionService<M, S>
where M: Unpin, S: Unpin,

§

impl<M, S> UnwindSafe for OptionService<M, S>
where M: UnwindSafe, S: UnwindSafe,

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<R> FirstAddrExt for R

Source§

fn first_addr(self) -> FirstAddrResolver<Self>
where Self: Sized,

Convert this resolver into a FirstAddrResolver. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T, BIn, BOut> HttpService<BIn> for T
where T: Service<Request<BIn>, Response = Response<BOut>>, BOut: Body, <T as Service<Request<BIn>>>::Error: Into<Box<dyn Error + Sync + Send>>,

Source§

type ResBody = BOut

The HttpBody body of the http::Response.
Source§

type Error = <T as Service<Request<BIn>>>::Error

The error type that can occur within this Service. Read more
Source§

type Future = <T as Service<Request<BIn>>>::Future

The Future returned by this Service.
Source§

fn poll_ready( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), <T as HttpService<BIn>>::Error>>

Source§

fn call(&mut self, req: Request<BIn>) -> <T as HttpService<BIn>>::Future

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<M, S, Target, Request> MakeService<Target, Request> for M
where M: Service<Target, Response = S>, S: Service<Request>,

Source§

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

Responses given by the service
Source§

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

Errors produced by the service
Source§

type Service = S

The Service value created by this factory
Source§

type MakeError = <M as Service<Target>>::Error

Errors produced while building a service.
Source§

type Future = <M as Service<Target>>::Future

The future of the Service instance.
Source§

fn poll_ready( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), <M as MakeService<Target, Request>>::MakeError>>

Returns Poll::Ready when the factory is able to create more services. Read more
Source§

fn make_service( &mut self, target: Target, ) -> <M as MakeService<Target, Request>>::Future

Create and return a new service value asynchronously.
Source§

fn into_service(self) -> IntoService<Self, Request>
where Self: Sized,

Consume this MakeService and convert it into a Service. Read more
Source§

fn as_service(&mut self) -> AsService<'_, Self, Request>
where Self: Sized,

Convert this MakeService into a Service without consuming the original MakeService. Read more
Source§

impl<T, Target, E, ME, S, F, Request, Response> MakeServiceRef<Target, Request> for T
where T: for<'a> Service<&'a Target, Error = ME, Response = S, Future = F>, E: Into<Box<dyn Error + Sync + Send>>, ME: Into<Box<dyn Error + Sync + Send>>, S: Service<Request, Response = Response, Error = E>, F: Future<Output = Result<S, ME>>,

Source§

type Error = E

The error type that can occur within this Service.
Source§

type Service = S

The Service type produced to handle requests.
Source§

type Response = Response

The HttpBody body of the http::Response.
Source§

type MakeError = ME

The error type that occurs if we can’t create the service.
Source§

type Future = F

The Future returned by this MakeService.
Source§

fn poll_ready_ref( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), <T as MakeServiceRef<Target, Request>>::MakeError>>

Poll the readiness of the make_serivce.
Source§

fn make_service_ref( &mut self, target: &Target, ) -> <T as MakeServiceRef<Target, Request>>::Future

Create a new service.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, F, R, A, E> Resolver<R> for T
where T: for<'a> Service<&'a R, Response = A, Error = E, Future = F>, F: Future<Output = Result<A, E>>,

Source§

type Address = A

Address type returned
Source§

type Error = E

Resolution error returned
Source§

type Future = F

Future type that the resolver uses to work.
Source§

fn poll_ready( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), <T as Resolver<R>>::Error>>

Check if the resolver is ready to resolve.
Source§

fn resolve(&mut self, request: &R) -> <T as Resolver<R>>::Future

Return a future representing the work the resolver does.
Source§

impl<S, R> ServiceExt<R> for S
where S: Service<R>,

Source§

fn into_make_service(self) -> IntoMakeService<S>

Convert this service into a MakeService, that is a Service whose response is another service. Read more
Source§

fn into_make_service_with_connect_info<C>( self, ) -> IntoMakeServiceWithConnectInfo<S, C>

Convert this service into a MakeService, that will store C’s associated ConnectInfo in a request extension such that ConnectInfo can extract it. Read more
Source§

fn handle_error<F, T>(self, f: F) -> HandleError<Self, F, T>

Convert this service into a HandleError, that will handle errors by converting them into responses. Read more
Source§

impl<T, Request> ServiceExt<Request> for T
where T: Service<Request> + ?Sized,

Source§

fn ready(&mut self) -> Ready<'_, Self, Request>
where Self: Sized,

Yields a mutable reference to the service when it is ready to accept a request.
Source§

fn ready_oneshot(self) -> ReadyOneshot<Self, Request>
where Self: Sized,

Yields the service when it is ready to accept a request.
Source§

fn oneshot(self, req: Request) -> Oneshot<Self, Request>
where Self: Sized,

Consume this Service, calling it with the provided request once it is ready.
Source§

fn call_all<S>(self, reqs: S) -> CallAll<Self, S>
where Self: Sized, S: Stream<Item = Request>,

Process all requests from the given Stream, and produce a Stream of their responses. Read more
Source§

fn and_then<F>(self, f: F) -> AndThen<Self, F>
where Self: Sized, F: Clone,

Executes a new future after this service’s future resolves. This does not alter the behaviour of the poll_ready method. Read more
Source§

fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
where Self: Sized, F: FnOnce(Self::Response) -> Response + Clone,

Maps this service’s response value to a different value. This does not alter the behaviour of the poll_ready method. Read more
Source§

fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
where Self: Sized, F: FnOnce(Self::Error) -> Error + Clone,

Maps this service’s error value to a different value. This does not alter the behaviour of the poll_ready method. Read more
Source§

fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
where Self: Sized, Error: From<Self::Error>, F: FnOnce(Result<Self::Response, Self::Error>) -> Result<Response, Error> + Clone,

Maps this service’s result type (Result<Self::Response, Self::Error>) to a different value, regardless of whether the future succeeds or fails. Read more
Source§

fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
where Self: Sized, F: FnMut(NewRequest) -> Request,

Composes a function in front of the service. Read more
Source§

fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
where Self: Sized, Error: From<Self::Error>, F: FnOnce(Result<Self::Response, Self::Error>) -> Fut + Clone, Fut: Future<Output = Result<Response, Error>>,

Composes an asynchronous function after this service. Read more
Source§

fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
where Self: Sized, F: FnMut(Self::Future) -> Fut, Error: From<Self::Error>, Fut: Future<Output = Result<Response, Error>>,

Composes a function that transforms futures produced by the service. Read more
Source§

fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
where Self: Sized + Send + 'static, Self::Future: Send + 'static,

Convert the service into a Service + Send trait object. Read more
Source§

fn boxed_clone(self) -> BoxCloneService<Request, Self::Response, Self::Error>
where Self: Sized + Clone + Send + 'static, Self::Future: Send + 'static,

Convert the service into a Service + Clone + Send trait object. Read more
Source§

impl<IO, T, F, R, E> ServiceRef<IO> for T
where T: for<'a> Service<&'a IO, Future = F, Response = R, Error = E>, F: Future<Output = Result<R, E>>,

Source§

type Future = F

The future returned by the service.
Source§

type Response = R

The response type of the service.
Source§

type Error = E

The error type of the service.
Source§

fn poll_ready( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), <T as ServiceRef<IO>>::Error>>

Poll the service to determine if it is ready to process requests.
Source§

fn call(&mut self, stream: &IO) -> <T as ServiceRef<IO>>::Future

Call the service with a reference to the connection.
Source§

impl<T, Req> TcpResolver<Req> for T
where T: Service<Req, Response = SocketAddrs>,

Source§

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

Error returned when TCP resolution fails
Source§

type Future = <T as Service<Req>>::Future

Future used to resovle TCP addresses
Source§

fn poll_ready( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), <T as TcpResolver<Req>>::Error>>

Check if the resolver is ready to resovle.
Source§

fn resolve(&mut self, req: Req) -> <T as TcpResolver<Req>>::Future

Return a future to resolve an address.
§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, IO, Req, F, E> Transport<Req> for T
where T: for<'a> Service<&'a Req, Response = IO, Future = F, Error = E> + Clone + Send + Sync + 'static, E: Error + Send + Sync + 'static, F: Future<Output = Result<IO, E>> + Send + 'static, IO: HasConnectionInfo + Send + 'static, Req: Send,

Source§

type IO = IO

The type of IO stream used by this transport
Source§

type Error = E

Error returned when connection fails
Source§

type Future = F

The future type returned by this service
Source§

fn connect(&mut self, req: &Req) -> <T as Transport<Req>>::Future

Connect to a remote server and return a stream.
Source§

fn poll_ready( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), <T as Transport<Req>>::Error>>

Poll the transport to see if it is ready to accept a new connection.
Source§

impl<T, Req> TransportExt<Req> for T
where T: Transport<Req>,

Source§

fn oneshot(self, request: Req) -> Oneshot<Self, Req>
where Self: Sized,

Create a future which uses the given transport to connect after calling poll_ready.
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,