# Enum futures_util::future::Either [−] [src]

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

Combines two different futures, streams, or sinks having the same associated types into a single type.

## Variants

`Left(A)`

First branch of the type

`Right(B)`

Second branch of the type

## Implementations

### `impl<A, B, T> Either<(T, A), (T, B)>` [src]

#### `pub fn factor_first(self) -> (T, Either<A, B>)` [src]

Factor out a homogeneous type from an either of pairs.

Here, the homogeneous type is the first element of the pairs.

### `impl<A, B, T> Either<(A, T), (B, T)>` [src]

#### `pub fn factor_second(self) -> (Either<A, B>, T)` [src]

Factor out a homogeneous type from an either of pairs.

Here, the homogeneous type is the second element of the pairs.

### `impl<T> Either<T, T>` [src]

#### `pub fn into_inner(self) -> T` [src]

Extract the value of an either over two equivalent types.

## Trait Implementations

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

#### `fn clone(&self) -> Either<A, B>ⓘ

### Notable traits for Either<A, B>

`impl<A, B> Future for Either<A, B> where
A: Future,
B: Future<Output = A::Output>, type Output = A::Output;`
` [src]

Returns a copy of the value. Read more

#### `pub fn clone_from(&mut self, source: &Self)`1.0.0 [src]

Performs copy-assignment from `source`. Read more

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

#### `fn fmt(&self, f: &mut Formatter<'_>) -> Result` [src]

Formats the value using the given formatter. Read more

### `impl<A, B> FusedFuture for Either<A, B> where
A: FusedFuture,
B: FusedFuture<Output = A::Output>,` [src]

#### `fn is_terminated(&self) -> bool` [src]

Returns `true` if the underlying future should no longer be polled.

### `impl<A, B> FusedStream for Either<A, B> where
A: FusedStream,
B: FusedStream<Item = A::Item>,` [src]

#### `fn is_terminated(&self) -> bool` [src]

Returns `true` if the stream should no longer be polled.

### `impl<A, B> Future for Either<A, B> where
A: Future,
B: Future<Output = A::Output>,` [src]

#### `type Output = A::Output`

The type of value produced on completion.

#### `fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>` [src]

Attempt to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more

### `impl<A, B> Stream for Either<A, B> where
A: Stream,
B: Stream<Item = A::Item>,` [src]

#### `type Item = A::Item`

Values yielded by the stream.

#### `fn poll_next(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Option<Self::Item>>` [src]

Attempt to pull out the next value of this stream, registering the current task for wakeup if the value is not yet available, and returning `None` if the stream is exhausted. Read more

#### `fn size_hint(&self) -> (usize, Option<usize>)` [src]

Returns the bounds on the remaining length of the stream. Read more

## 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> Unpin for Either<A, B> where
A: Unpin,
B: Unpin,`

### `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]

#### `pub fn type_id(&self) -> TypeId` [src]

Gets the `TypeId` of `self`. Read more

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

#### `pub fn borrow(&self) -> &T` [src]

Immutably borrows from an owned value. Read more

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

#### `pub fn borrow_mut(&mut self) -> &mut T` [src]

Mutably borrows from an owned value. Read more

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

#### `pub fn from(t: T) -> T` [src]

Performs the conversion.

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

#### `pub fn into(self) -> U` [src]

Performs the conversion.

### `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?

#### `pub fn into_future(self) -> <F as IntoFuture>::Future` [src]

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

Creates a future from a value.

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

#### `type Owned = T`

The resulting type after obtaining ownership.

#### `pub fn to_owned(&self) -> T` [src]

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

#### `pub fn clone_into(&self, target: &mut T)` [src]

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

recently added

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

### `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.

#### `pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>` [src]

Performs the conversion.

### `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

#### `pub fn try_poll(
self: Pin<&mut F>,
cx: &mut Context<'_>
) -> Poll<<F as Future>::Output>` [src]

Poll this `TryFuture` as if it were a `Future`. Read more

### `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.

#### `pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>` [src]

Performs the conversion.

### `impl<S, T, E> TryStream for S where
S: Stream<Item = 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

#### `pub fn try_poll_next(
self: Pin<&mut S>,
cx: &mut Context<'_>
) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>` [src]

Poll this `TryStream` as if it were a `Stream`. Read more