Struct EitherService

Source
pub struct EitherService<A, B> { /* private fields */ }
Expand description

Combine two different service types into a single type.

Both services must be of the same request, response, and error types. EitherService is useful for handling conditional branching in service middleware to different inner service types.

Trait Implementations§

Source§

impl<A: Clone, B: Clone> Clone for EitherService<A, B>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<A, B> Service for EitherService<A, B>
where A: Service, B: Service<Response = A::Response, Error = A::Error>,

Source§

type Request = Either<<A as Service>::Request, <B as Service>::Request>

Requests handled by the service.
Source§

type Response = <A as Service>::Response

Responses given by the service.
Source§

type Error = <A as Service>::Error

Errors produced by the service.
Source§

type Future = Either<<A as Service>::Future, <B as Service>::Future>

The future response value.
Source§

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

Returns Ready when the service is able to process requests. Read more
Source§

fn call(&mut self, req: Either<A::Request, B::Request>) -> Self::Future

Process the request and return the response asynchronously. Read more
Source§

fn map<F, R>(self, f: F) -> Map<Self, F, R>
where Self: Sized, F: FnMut(Self::Response) -> R,

Map this service’s output to a different type, returning a new service of the resulting type. Read more
Source§

fn map_err<F, E>(self, f: F) -> MapErr<Self, F, E>
where Self: Sized, F: Fn(Self::Error) -> E,

Map this service’s error to a different error, returning a new service. Read more

Auto Trait Implementations§

§

impl<A, B> Freeze for EitherService<A, B>
where A: Freeze, B: Freeze,

§

impl<A, B> RefUnwindSafe for EitherService<A, B>

§

impl<A, B> Send for EitherService<A, B>
where A: Send, B: Send,

§

impl<A, B> Sync for EitherService<A, B>
where A: Sync, B: Sync,

§

impl<A, B> Unpin for EitherService<A, B>
where A: Unpin, B: Unpin,

§

impl<A, B> UnwindSafe for EitherService<A, B>
where A: UnwindSafe, B: UnwindSafe,

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

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

Source§

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

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<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoService<T> for T
where T: Service,

Source§

fn into_service(self) -> T

Convert to a Service
Source§

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

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

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

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

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

Source§

type Error = Infallible

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

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

Performs the conversion.
Source§

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

Source§

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

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

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

Performs the conversion.