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
One type of backing Service
.
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][+]
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>>,
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][+]
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>>,
impl<'pin, A, B> Unpin for Either<A, B> where
__Either<'pin, A, B>: Unpin,
[src]
__Either<'pin, A, B>: Unpin,
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,
A: RefUnwindSafe,
B: RefUnwindSafe,
impl<A, B> Send for Either<A, B> where
A: Send,
B: Send,
A: Send,
B: Send,
impl<A, B> Sync for Either<A, B> where
A: Sync,
B: Sync,
A: Sync,
B: Sync,
impl<A, B> UnwindSafe for Either<A, B> where
A: UnwindSafe,
B: UnwindSafe,
A: UnwindSafe,
B: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> From<T> for T
[src][+]
impl<T> FutureExt for T where
T: Future + ?Sized,
[src][+]
T: Future + ?Sized,
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<F> IntoFuture for F where
F: Future,
[src][+]
F: Future,
impl<T, Request> ServiceExt<Request> for T where
T: Service<Request> + ?Sized,
[src][+]
T: Service<Request> + ?Sized,
impl<T> ToOwned for T where
T: Clone,
[src][+]
T: Clone,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<F, T, E> TryFuture for F where
F: Future<Output = Result<T, E>> + ?Sized,
[src][+]
F: Future<Output = Result<T, E>> + ?Sized,
impl<Fut> TryFutureExt for Fut where
Fut: TryFuture + ?Sized,
[src][+]
Fut: TryFuture + ?Sized,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,