Enum tower::util::Either[][src]

pub enum Either<A, B> {
    A(A),
    B(B),
}
This is supported on crate feature util only.

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<BoxError>,
    B: Future<Output = Result<T, BE>>,
    BE: Into<BoxError>, 
[src]

type Output = Result<T, BoxError>

The type of value produced on completion.

impl<S, A, B> Layer<S> for Either<A, B> where
    A: Layer<S>,
    B: Layer<S>, 
[src]

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

The wrapped service

impl<A, B, Request> Service<Request> for Either<A, B> where
    A: Service<Request>,
    A::Error: Into<BoxError>,
    B: Service<Request, Response = A::Response>,
    B::Error: Into<BoxError>, 
[src]

type Response = A::Response

Responses given by the service.

type Error = BoxError

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]

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> Instrument for T[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.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,