Enum tower_util::Either[][src]

pub enum Either<A, B> {
    A(A),
    B(B),
}

Combine two different service types into a single type.

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

Variants

A(A)

One type of backing Service.

B(B)

The other type of backing Service.

Trait Implementations

impl<A: Clone, B: Clone> Clone for Either<A, B>[src]

impl<A: Debug, B: Debug> Debug for Either<A, B>[src]

impl<A, B, T, AE, BE> Future for Either<A, B> where
    A: Future<Output = Result<T, AE>>,
    AE: Into<Box<dyn Error + Send + Sync>>,
    B: Future<Output = Result<T, BE>>,
    BE: Into<Box<dyn Error + Send + Sync>>, 
[src]

type Output = Result<T, Box<dyn Error + Send + Sync>>

The type of value produced on completion.

impl<A, B> PinnedDrop for Either<A, B>[src]

impl<A, B, Request> Service<Request> for Either<A, B> where
    A: Service<Request>,
    A::Error: Into<Box<dyn Error + Send + Sync>>,
    B: Service<Request, Response = A::Response>,
    B::Error: Into<Box<dyn Error + Send + Sync>>, 
[src]

type Response = A::Response

Responses given by the service.

type Error = Box<dyn Error + Send + Sync>

Errors produced by the service.

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

The future response value.

impl<'pin, A, B> Unpin for Either<A, B> where
    __Either<'pin, A, B>: Unpin
[src]

impl<A, B> UnsafeUnpin for Either<A, B>[src]

Auto Trait Implementations

impl<A, B> RefUnwindSafe for Either<A, B> where
    A: RefUnwindSafe,
    B: RefUnwindSafe

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

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

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

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T> FutureExt for T where
    T: Future + ?Sized
[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<F> IntoFuture for F where
    F: Future
[src]

type Output = <F as Future>::Output

🔬 This is a nightly-only experimental API. (into_future)

The output that the future will produce on completion.

type Future = F

🔬 This is a nightly-only experimental API. (into_future)

Which kind of future are we turning this into?

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

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<F, T, E> TryFuture for F where
    F: Future<Output = Result<T, E>> + ?Sized
[src]

type Ok = T

The type of successful values yielded by this future

type Error = E

The type of failures yielded by this future

impl<Fut> TryFutureExt for Fut where
    Fut: TryFuture + ?Sized
[src]

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.