[−][src]Enum tower::util::Either
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
Trait Implementations
impl<A, B, Request> Service<Request> for Either<A, B> where
A: Service<Request>,
B: Service<Request, Response = <A as Service<Request>>::Response>,
Box<dyn Error + 'static + Send + Sync>: From<<A as Service<Request>>::Error>,
Box<dyn Error + 'static + Send + Sync>: From<<B as Service<Request>>::Error>,
[src]
A: Service<Request>,
B: Service<Request, Response = <A as Service<Request>>::Response>,
Box<dyn Error + 'static + Send + Sync>: From<<A as Service<Request>>::Error>,
Box<dyn Error + 'static + Send + Sync>: From<<B as Service<Request>>::Error>,
type Response = <A as Service<Request>>::Response
Responses given by the service.
type Error = Box<dyn Error + 'static + Send + Sync>
Errors produced by the service.
type Future = Either<<A as Service<Request>>::Future, <B as Service<Request>>::Future>
The future response value.
fn poll_ready(
&mut self,
cx: &mut Context
) -> Poll<Result<(), <Either<A, B> as Service<Request>>::Error>>
[src]
&mut self,
cx: &mut Context
) -> Poll<Result<(), <Either<A, B> as Service<Request>>::Error>>
ⓘImportant traits for Either<A, B>fn call(
&mut self,
request: Request
) -> <Either<A, B> as Service<Request>>::Future
[src]
ⓘImportant traits for Either<A, B>
&mut self,
request: Request
) -> <Either<A, B> as Service<Request>>::Future
impl<A, B> Unpin for Either<A, B> where
__UnpinStructEither<A, B>: Unpin,
[src]
__UnpinStructEither<A, B>: Unpin,
impl<A, B, T, AE, BE> Future for Either<A, B> where
A: Future<Output = Result<T, AE>>,
B: Future<Output = Result<T, BE>>,
Box<dyn Error + 'static + Send + Sync>: From<AE>,
Box<dyn Error + 'static + Send + Sync>: From<BE>,
[src]
A: Future<Output = Result<T, AE>>,
B: Future<Output = Result<T, BE>>,
Box<dyn Error + 'static + Send + Sync>: From<AE>,
Box<dyn Error + 'static + Send + Sync>: From<BE>,
type Output = Result<T, Box<dyn Error + 'static + Send + Sync>>
The type of value produced on completion.
fn poll(
self: Pin<&mut Either<A, B>>,
cx: &mut Context
) -> Poll<<Either<A, B> as Future>::Output>
[src]
self: Pin<&mut Either<A, B>>,
cx: &mut Context
) -> Poll<<Either<A, B> as Future>::Output>
impl<A, B> Debug for Either<A, B> where
A: Debug,
B: Debug,
[src]
A: Debug,
B: Debug,
impl<A, B> Clone for Either<A, B> where
A: Clone,
B: Clone,
[src]
A: Clone,
B: Clone,
Auto Trait Implementations
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,
impl<A, B> RefUnwindSafe for Either<A, B> where
A: RefUnwindSafe,
B: RefUnwindSafe,
A: RefUnwindSafe,
B: RefUnwindSafe,
Blanket Implementations
impl<T, Request> ServiceExt<Request> for T where
T: Service<Request> + ?Sized,
[src]
T: Service<Request> + ?Sized,
ⓘImportant traits for Ready<'a, T, Request>fn ready(&mut self) -> Ready<Self, Request> where
Self: Sized,
[src]
ⓘImportant traits for Ready<'a, T, Request>
Self: Sized,
ⓘImportant traits for Oneshot<S, Req>fn oneshot(self, req: Request) -> Oneshot<Self, Request> where
Self: Sized,
[src]
ⓘImportant traits for Oneshot<S, Req>
Self: Sized,
fn call_all<S>(self, reqs: S) -> CallAll<Self, S> where
Self: Sized,
Self::Error: Into<Box<dyn Error + Send + Sync>>,
S: Stream<Item = Request>,
[src]
Self: Sized,
Self::Error: Into<Box<dyn Error + Send + Sync>>,
S: Stream<Item = Request>,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
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>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
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>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<F, T, E> TryFuture for F where
F: Future<Output = Result<T, E>> + ?Sized,
[src]
F: Future<Output = Result<T, E>> + ?Sized,
type Ok = T
The type of successful values yielded by this future
type Error = E
The type of failures yielded by this future
fn try_poll(self: Pin<&mut F>, cx: &mut Context) -> Poll<<F as Future>::Output>
[src]
impl<T> FutureExt for T where
T: Future + ?Sized,
[src]
T: Future + ?Sized,
fn map<U, F>(self, f: F) -> Map<Self, F> where
F: FnOnce(Self::Output) -> U,
[src]
F: FnOnce(Self::Output) -> U,
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F> where
F: FnOnce(Self::Output) -> Fut,
Fut: Future,
[src]
F: FnOnce(Self::Output) -> Fut,
Fut: Future,
fn left_future<B>(self) -> Either<Self, B> where
B: Future<Output = Self::Output>,
[src]
B: Future<Output = Self::Output>,
fn right_future<A>(self) -> Either<A, Self> where
A: Future<Output = Self::Output>,
[src]
A: Future<Output = Self::Output>,
fn into_stream(self) -> IntoStream<Self>
[src]
fn flatten(self) -> Flatten<Self> where
Self::Output: Future,
[src]
Self::Output: Future,
fn flatten_stream(self) -> FlattenStream<Self> where
Self::Output: Stream,
[src]
Self::Output: Stream,
fn fuse(self) -> Fuse<Self>
[src]
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnOnce(&Self::Output),
[src]
F: FnOnce(&Self::Output),
fn catch_unwind(self) -> CatchUnwind<Self> where
Self: UnwindSafe,
[src]
Self: UnwindSafe,
fn shared(self) -> Shared<Self> where
Self::Output: Clone,
[src]
Self::Output: Clone,
fn remote_handle(self) -> (Remote<Self>, RemoteHandle<Self::Output>)
[src]
fn boxed<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + 'a + Send>> where
Self: Send + 'a,
[src]
Self: Send + 'a,
fn boxed_local<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + 'a>> where
Self: 'a,
[src]
Self: 'a,
fn unit_error(self) -> UnitError<Self>
[src]
fn never_error(self) -> NeverError<Self>
[src]
fn poll_unpin(&mut self, cx: &mut Context) -> Poll<Self::Output> where
Self: Unpin,
[src]
Self: Unpin,
fn now_or_never(self) -> Option<Self::Output>
[src]
impl<Fut> TryFutureExt for Fut where
Fut: TryFuture + ?Sized,
[src]
Fut: TryFuture + ?Sized,
fn map_ok<T, F>(self, f: F) -> MapOk<Self, F> where
F: FnOnce(Self::Ok) -> T,
[src]
F: FnOnce(Self::Ok) -> T,
fn map_err<E, F>(self, f: F) -> MapErr<Self, F> where
F: FnOnce(Self::Error) -> E,
[src]
F: FnOnce(Self::Error) -> E,
fn err_into<E>(self) -> ErrInto<Self, E> where
Self::Error: Into<E>,
[src]
Self::Error: Into<E>,
fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F> where
F: FnOnce(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
[src]
F: FnOnce(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F> where
F: FnOnce(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
[src]
F: FnOnce(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F> where
F: FnOnce(&Self::Ok),
[src]
F: FnOnce(&Self::Ok),
fn inspect_err<F>(self, f: F) -> InspectErr<Self, F> where
F: FnOnce(&Self::Error),
[src]
F: FnOnce(&Self::Error),
fn try_flatten_stream(self) -> TryFlattenStream<Self> where
Self::Ok: TryStream,
<Self::Ok as TryStream>::Error == Self::Error,
[src]
Self::Ok: TryStream,
<Self::Ok as TryStream>::Error == Self::Error,
fn unwrap_or_else<F>(self, f: F) -> UnwrapOrElse<Self, F> where
F: FnOnce(Self::Error) -> Self::Ok,
[src]
F: FnOnce(Self::Error) -> Self::Ok,
fn into_future(self) -> IntoFuture<Self>
[src]
fn try_poll_unpin(
&mut self,
cx: &mut Context
) -> Poll<Result<Self::Ok, Self::Error>> where
Self: Unpin,
[src]
&mut self,
cx: &mut Context
) -> Poll<Result<Self::Ok, Self::Error>> where
Self: Unpin,