Enum tokio_util::either::Either [−][src]
pub enum Either<L, R> { Left(L), Right(R), }
Expand description
Combines two different futures, streams, or sinks having the same associated types into a single type.
This type implements common asynchronous traits such as Future
and those in Tokio.
Example
The following code will not work:
#[tokio::main] async fn main() { let result = if some_condition() { some_async_function() } else { other_async_function() // <- Will print: "`if` and `else` have incompatible types" }; println!("Result is {}", result.await); }
When the output type is the same, we can wrap each future in Either
to avoid the
issue:
use tokio_util::either::Either; #[tokio::main] async fn main() { let result = if some_condition() { Either::Left(some_async_function()) } else { Either::Right(other_async_function()) }; let value = result.await; println!("Result is {}", value); }
Variants
Trait Implementations
impl<L, R> AsyncBufRead for Either<L, R> where
L: AsyncBufRead,
R: AsyncBufRead,
[src]
impl<L, R> AsyncBufRead for Either<L, R> where
L: AsyncBufRead,
R: AsyncBufRead,
[src]impl<L, R> AsyncWrite for Either<L, R> where
L: AsyncWrite,
R: AsyncWrite,
[src]
impl<L, R> AsyncWrite for Either<L, R> where
L: AsyncWrite,
R: AsyncWrite,
[src]fn poll_write(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &[u8]
) -> Poll<Result<usize>>
[src]
fn poll_write(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &[u8]
) -> Poll<Result<usize>>
[src]Attempt to write bytes from buf
into the object. Read more
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
[src]
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
[src]Attempts to flush the object, ensuring that any buffered data reach their destination. Read more
fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
[src]
fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
[src]Initiates or attempts to shut down this writer, returning success when the I/O connection has completely shut down. Read more
fn poll_write_vectored(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
bufs: &[IoSlice<'_>]
) -> Poll<Result<usize, Error>>
[src]
fn poll_write_vectored(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
bufs: &[IoSlice<'_>]
) -> Poll<Result<usize, Error>>
[src]Like poll_write
, except that it writes from a slice of buffers. Read more
fn is_write_vectored(&self) -> bool
[src]
fn is_write_vectored(&self) -> bool
[src]Determines if this writer has an efficient poll_write_vectored
implementation. Read more
impl<L: Clone, R: Clone> Clone for Either<L, R>
[src]
impl<L: Clone, R: Clone> Clone for Either<L, R>
[src]impl<L, R> Stream for Either<L, R> where
L: Stream,
R: Stream<Item = L::Item>,
[src]
impl<L, R> Stream for Either<L, R> where
L: Stream,
R: Stream<Item = L::Item>,
[src]Auto Trait Implementations
impl<L, R> RefUnwindSafe for Either<L, R> where
L: RefUnwindSafe,
R: RefUnwindSafe,
L: RefUnwindSafe,
R: RefUnwindSafe,
impl<L, R> Send for Either<L, R> where
L: Send,
R: Send,
L: Send,
R: Send,
impl<L, R> Sync for Either<L, R> where
L: Sync,
R: Sync,
L: Sync,
R: Sync,
impl<L, R> Unpin for Either<L, R> where
L: Unpin,
R: Unpin,
L: Unpin,
R: Unpin,
impl<L, R> UnwindSafe for Either<L, R> where
L: UnwindSafe,
R: UnwindSafe,
L: UnwindSafe,
R: UnwindSafe,
Blanket Implementations
impl<R> AsyncBufReadExt for R where
R: AsyncBufRead + ?Sized,
[src]
impl<R> AsyncBufReadExt for R where
R: AsyncBufRead + ?Sized,
[src]fn read_until(
&'a mut self,
byte: u8,
buf: &'a mut Vec<u8, Global>
) -> ReadUntil<'a, Self> where
Self: Unpin,
[src]
fn read_until(
&'a mut self,
byte: u8,
buf: &'a mut Vec<u8, Global>
) -> ReadUntil<'a, Self> where
Self: Unpin,
[src]Reads all bytes into buf
until the delimiter byte
or EOF is reached. Read more
fn read_line(&'a mut self, buf: &'a mut String) -> ReadLine<'a, Self> where
Self: Unpin,
[src]
fn read_line(&'a mut self, buf: &'a mut String) -> ReadLine<'a, Self> where
Self: Unpin,
[src]Reads all bytes until a newline (the 0xA byte) is reached, and append them to the provided buffer. Read more
fn split(self, byte: u8) -> Split<Self> where
Self: Unpin,
[src]
fn split(self, byte: u8) -> Split<Self> where
Self: Unpin,
[src]Returns a stream of the contents of this reader split on the byte
byte
. Read more
fn lines(self) -> Lines<Self>
[src]
fn lines(self) -> Lines<Self>
[src]Returns a stream over the lines of this reader.
This method is the async equivalent to BufRead::lines
. Read more
impl<R> AsyncReadExt for R where
R: AsyncRead + ?Sized,
[src]
impl<R> AsyncReadExt for R where
R: AsyncRead + ?Sized,
[src]fn chain<R>(self, next: R) -> Chain<Self, R> where
R: AsyncRead,
[src]
fn chain<R>(self, next: R) -> Chain<Self, R> where
R: AsyncRead,
[src]Creates a new AsyncRead
instance that chains this stream with
next
. Read more
fn read(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self> where
Self: Unpin,
[src]
fn read(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self> where
Self: Unpin,
[src]Pulls some bytes from this source into the specified buffer, returning how many bytes were read. Read more
fn read_buf<B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B> where
Self: Unpin,
B: BufMut,
[src]
fn read_buf<B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B> where
Self: Unpin,
B: BufMut,
[src]Pulls some bytes from this source into the specified buffer, advancing the buffer’s internal cursor. Read more
fn read_exact(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self> where
Self: Unpin,
[src]
fn read_exact(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self> where
Self: Unpin,
[src]Reads the exact number of bytes required to fill buf
. Read more
fn read_u8(&'a mut self) -> ReadU8<&'a mut Self> where
Self: Unpin,
[src]
fn read_u8(&'a mut self) -> ReadU8<&'a mut Self> where
Self: Unpin,
[src]Reads an unsigned 8 bit integer from the underlying reader. Read more
fn read_i8(&'a mut self) -> ReadI8<&'a mut Self> where
Self: Unpin,
[src]
fn read_i8(&'a mut self) -> ReadI8<&'a mut Self> where
Self: Unpin,
[src]Reads a signed 8 bit integer from the underlying reader. Read more
fn read_u16(&'a mut self) -> ReadU16<&'a mut Self> where
Self: Unpin,
[src]
fn read_u16(&'a mut self) -> ReadU16<&'a mut Self> where
Self: Unpin,
[src]Reads an unsigned 16-bit integer in big-endian order from the underlying reader. Read more
fn read_i16(&'a mut self) -> ReadI16<&'a mut Self> where
Self: Unpin,
[src]
fn read_i16(&'a mut self) -> ReadI16<&'a mut Self> where
Self: Unpin,
[src]Reads a signed 16-bit integer in big-endian order from the underlying reader. Read more
fn read_u32(&'a mut self) -> ReadU32<&'a mut Self> where
Self: Unpin,
[src]
fn read_u32(&'a mut self) -> ReadU32<&'a mut Self> where
Self: Unpin,
[src]Reads an unsigned 32-bit integer in big-endian order from the underlying reader. Read more
fn read_i32(&'a mut self) -> ReadI32<&'a mut Self> where
Self: Unpin,
[src]
fn read_i32(&'a mut self) -> ReadI32<&'a mut Self> where
Self: Unpin,
[src]Reads a signed 32-bit integer in big-endian order from the underlying reader. Read more
fn read_u64(&'a mut self) -> ReadU64<&'a mut Self> where
Self: Unpin,
[src]
fn read_u64(&'a mut self) -> ReadU64<&'a mut Self> where
Self: Unpin,
[src]Reads an unsigned 64-bit integer in big-endian order from the underlying reader. Read more
fn read_i64(&'a mut self) -> ReadI64<&'a mut Self> where
Self: Unpin,
[src]
fn read_i64(&'a mut self) -> ReadI64<&'a mut Self> where
Self: Unpin,
[src]Reads an signed 64-bit integer in big-endian order from the underlying reader. Read more
fn read_u128(&'a mut self) -> ReadU128<&'a mut Self> where
Self: Unpin,
[src]
fn read_u128(&'a mut self) -> ReadU128<&'a mut Self> where
Self: Unpin,
[src]Reads an unsigned 128-bit integer in big-endian order from the underlying reader. Read more
fn read_i128(&'a mut self) -> ReadI128<&'a mut Self> where
Self: Unpin,
[src]
fn read_i128(&'a mut self) -> ReadI128<&'a mut Self> where
Self: Unpin,
[src]Reads an signed 128-bit integer in big-endian order from the underlying reader. Read more
fn read_u16_le(&'a mut self) -> ReadU16Le<&'a mut Self> where
Self: Unpin,
[src]
fn read_u16_le(&'a mut self) -> ReadU16Le<&'a mut Self> where
Self: Unpin,
[src]Reads an unsigned 16-bit integer in little-endian order from the underlying reader. Read more
fn read_i16_le(&'a mut self) -> ReadI16Le<&'a mut Self> where
Self: Unpin,
[src]
fn read_i16_le(&'a mut self) -> ReadI16Le<&'a mut Self> where
Self: Unpin,
[src]Reads a signed 16-bit integer in little-endian order from the underlying reader. Read more
fn read_u32_le(&'a mut self) -> ReadU32Le<&'a mut Self> where
Self: Unpin,
[src]
fn read_u32_le(&'a mut self) -> ReadU32Le<&'a mut Self> where
Self: Unpin,
[src]Reads an unsigned 32-bit integer in little-endian order from the underlying reader. Read more
fn read_i32_le(&'a mut self) -> ReadI32Le<&'a mut Self> where
Self: Unpin,
[src]
fn read_i32_le(&'a mut self) -> ReadI32Le<&'a mut Self> where
Self: Unpin,
[src]Reads a signed 32-bit integer in little-endian order from the underlying reader. Read more
fn read_u64_le(&'a mut self) -> ReadU64Le<&'a mut Self> where
Self: Unpin,
[src]
fn read_u64_le(&'a mut self) -> ReadU64Le<&'a mut Self> where
Self: Unpin,
[src]Reads an unsigned 64-bit integer in little-endian order from the underlying reader. Read more
fn read_i64_le(&'a mut self) -> ReadI64Le<&'a mut Self> where
Self: Unpin,
[src]
fn read_i64_le(&'a mut self) -> ReadI64Le<&'a mut Self> where
Self: Unpin,
[src]Reads an signed 64-bit integer in little-endian order from the underlying reader. Read more
fn read_u128_le(&'a mut self) -> ReadU128Le<&'a mut Self> where
Self: Unpin,
[src]
fn read_u128_le(&'a mut self) -> ReadU128Le<&'a mut Self> where
Self: Unpin,
[src]Reads an unsigned 128-bit integer in little-endian order from the underlying reader. Read more
fn read_i128_le(&'a mut self) -> ReadI128Le<&'a mut Self> where
Self: Unpin,
[src]
fn read_i128_le(&'a mut self) -> ReadI128Le<&'a mut Self> where
Self: Unpin,
[src]Reads an signed 128-bit integer in little-endian order from the underlying reader. Read more
fn read_to_end(
&'a mut self,
buf: &'a mut Vec<u8, Global>
) -> ReadToEnd<'a, Self> where
Self: Unpin,
[src]
fn read_to_end(
&'a mut self,
buf: &'a mut Vec<u8, Global>
) -> ReadToEnd<'a, Self> where
Self: Unpin,
[src]Reads all bytes until EOF in this source, placing them into buf
. Read more
fn read_to_string(&'a mut self, dst: &'a mut String) -> ReadToString<'a, Self> where
Self: Unpin,
[src]
fn read_to_string(&'a mut self, dst: &'a mut String) -> ReadToString<'a, Self> where
Self: Unpin,
[src]Reads all bytes until EOF in this source, appending them to buf
. Read more
impl<S> AsyncSeekExt for S where
S: AsyncSeek + ?Sized,
[src]
impl<S> AsyncSeekExt for S where
S: AsyncSeek + ?Sized,
[src]fn seek(&mut self, pos: SeekFrom) -> Seek<'_, Self> where
Self: Unpin,
[src]
fn seek(&mut self, pos: SeekFrom) -> Seek<'_, Self> where
Self: Unpin,
[src]Creates a future which will seek an IO object, and then yield the new position in the object and the object itself. Read more
fn stream_position(&mut self) -> Seek<'_, Self> where
Self: Unpin,
[src]
fn stream_position(&mut self) -> Seek<'_, Self> where
Self: Unpin,
[src]Creates a future which will return the current seek position from the start of the stream. Read more
impl<W> AsyncWriteExt for W where
W: AsyncWrite + ?Sized,
[src]
impl<W> AsyncWriteExt for W where
W: AsyncWrite + ?Sized,
[src]fn write(&'a mut self, src: &'a [u8]) -> Write<'a, Self> where
Self: Unpin,
[src]
fn write(&'a mut self, src: &'a [u8]) -> Write<'a, Self> where
Self: Unpin,
[src]Writes a buffer into this writer, returning how many bytes were written. Read more
fn write_vectored(
&'a mut self,
bufs: &'a [IoSlice<'b>]
) -> WriteVectored<'a, 'b, Self> where
Self: Unpin,
[src]
fn write_vectored(
&'a mut self,
bufs: &'a [IoSlice<'b>]
) -> WriteVectored<'a, 'b, Self> where
Self: Unpin,
[src]fn write_buf<B>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B> where
Self: Unpin,
B: Buf,
[src]
fn write_buf<B>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B> where
Self: Unpin,
B: Buf,
[src]Writes a buffer into this writer, advancing the buffer’s internal cursor. Read more
fn write_all_buf<B>(&'a mut self, src: &'a mut B) -> WriteAllBuf<'a, Self, B> where
Self: Unpin,
B: Buf,
[src]
fn write_all_buf<B>(&'a mut self, src: &'a mut B) -> WriteAllBuf<'a, Self, B> where
Self: Unpin,
B: Buf,
[src]Attempts to write an entire buffer into this writer Read more
fn write_all(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self> where
Self: Unpin,
[src]
fn write_all(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self> where
Self: Unpin,
[src]Attempts to write an entire buffer into this writer. Read more
fn write_u8(&'a mut self, n: u8) -> WriteU8<&'a mut Self> where
Self: Unpin,
[src]
fn write_u8(&'a mut self, n: u8) -> WriteU8<&'a mut Self> where
Self: Unpin,
[src]Writes an unsigned 8-bit integer to the underlying writer. Read more
fn write_i8(&'a mut self, n: i8) -> WriteI8<&'a mut Self> where
Self: Unpin,
[src]
fn write_i8(&'a mut self, n: i8) -> WriteI8<&'a mut Self> where
Self: Unpin,
[src]Writes an unsigned 8-bit integer to the underlying writer. Read more
fn write_u16(&'a mut self, n: u16) -> WriteU16<&'a mut Self> where
Self: Unpin,
[src]
fn write_u16(&'a mut self, n: u16) -> WriteU16<&'a mut Self> where
Self: Unpin,
[src]Writes an unsigned 16-bit integer in big-endian order to the underlying writer. Read more
fn write_i16(&'a mut self, n: i16) -> WriteI16<&'a mut Self> where
Self: Unpin,
[src]
fn write_i16(&'a mut self, n: i16) -> WriteI16<&'a mut Self> where
Self: Unpin,
[src]Writes a signed 16-bit integer in big-endian order to the underlying writer. Read more
fn write_u32(&'a mut self, n: u32) -> WriteU32<&'a mut Self> where
Self: Unpin,
[src]
fn write_u32(&'a mut self, n: u32) -> WriteU32<&'a mut Self> where
Self: Unpin,
[src]Writes an unsigned 32-bit integer in big-endian order to the underlying writer. Read more
fn write_i32(&'a mut self, n: i32) -> WriteI32<&'a mut Self> where
Self: Unpin,
[src]
fn write_i32(&'a mut self, n: i32) -> WriteI32<&'a mut Self> where
Self: Unpin,
[src]Writes a signed 32-bit integer in big-endian order to the underlying writer. Read more
fn write_u64(&'a mut self, n: u64) -> WriteU64<&'a mut Self> where
Self: Unpin,
[src]
fn write_u64(&'a mut self, n: u64) -> WriteU64<&'a mut Self> where
Self: Unpin,
[src]Writes an unsigned 64-bit integer in big-endian order to the underlying writer. Read more
fn write_i64(&'a mut self, n: i64) -> WriteI64<&'a mut Self> where
Self: Unpin,
[src]
fn write_i64(&'a mut self, n: i64) -> WriteI64<&'a mut Self> where
Self: Unpin,
[src]Writes an signed 64-bit integer in big-endian order to the underlying writer. Read more
fn write_u128(&'a mut self, n: u128) -> WriteU128<&'a mut Self> where
Self: Unpin,
[src]
fn write_u128(&'a mut self, n: u128) -> WriteU128<&'a mut Self> where
Self: Unpin,
[src]Writes an unsigned 128-bit integer in big-endian order to the underlying writer. Read more
fn write_i128(&'a mut self, n: i128) -> WriteI128<&'a mut Self> where
Self: Unpin,
[src]
fn write_i128(&'a mut self, n: i128) -> WriteI128<&'a mut Self> where
Self: Unpin,
[src]Writes an signed 128-bit integer in big-endian order to the underlying writer. Read more
fn write_u16_le(&'a mut self, n: u16) -> WriteU16Le<&'a mut Self> where
Self: Unpin,
[src]
fn write_u16_le(&'a mut self, n: u16) -> WriteU16Le<&'a mut Self> where
Self: Unpin,
[src]Writes an unsigned 16-bit integer in little-endian order to the underlying writer. Read more
fn write_i16_le(&'a mut self, n: i16) -> WriteI16Le<&'a mut Self> where
Self: Unpin,
[src]
fn write_i16_le(&'a mut self, n: i16) -> WriteI16Le<&'a mut Self> where
Self: Unpin,
[src]Writes a signed 16-bit integer in little-endian order to the underlying writer. Read more
fn write_u32_le(&'a mut self, n: u32) -> WriteU32Le<&'a mut Self> where
Self: Unpin,
[src]
fn write_u32_le(&'a mut self, n: u32) -> WriteU32Le<&'a mut Self> where
Self: Unpin,
[src]Writes an unsigned 32-bit integer in little-endian order to the underlying writer. Read more
fn write_i32_le(&'a mut self, n: i32) -> WriteI32Le<&'a mut Self> where
Self: Unpin,
[src]
fn write_i32_le(&'a mut self, n: i32) -> WriteI32Le<&'a mut Self> where
Self: Unpin,
[src]Writes a signed 32-bit integer in little-endian order to the underlying writer. Read more
fn write_u64_le(&'a mut self, n: u64) -> WriteU64Le<&'a mut Self> where
Self: Unpin,
[src]
fn write_u64_le(&'a mut self, n: u64) -> WriteU64Le<&'a mut Self> where
Self: Unpin,
[src]Writes an unsigned 64-bit integer in little-endian order to the underlying writer. Read more
fn write_i64_le(&'a mut self, n: i64) -> WriteI64Le<&'a mut Self> where
Self: Unpin,
[src]
fn write_i64_le(&'a mut self, n: i64) -> WriteI64Le<&'a mut Self> where
Self: Unpin,
[src]Writes an signed 64-bit integer in little-endian order to the underlying writer. Read more
fn write_u128_le(&'a mut self, n: u128) -> WriteU128Le<&'a mut Self> where
Self: Unpin,
[src]
fn write_u128_le(&'a mut self, n: u128) -> WriteU128Le<&'a mut Self> where
Self: Unpin,
[src]Writes an unsigned 128-bit integer in little-endian order to the underlying writer. Read more
fn write_i128_le(&'a mut self, n: i128) -> WriteI128Le<&'a mut Self> where
Self: Unpin,
[src]
fn write_i128_le(&'a mut self, n: i128) -> WriteI128Le<&'a mut Self> where
Self: Unpin,
[src]Writes an signed 128-bit integer in little-endian order to the underlying writer. Read more
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<F> IntoFuture for F where
F: Future,
[src]
impl<F> IntoFuture for F where
F: Future,
[src]type Output = <F as Future>::Output
type Output = <F as Future>::Output
into_future
)The output that the future will produce on completion.
type Future = F
type Future = F
into_future
)Which kind of future are we turning this into?
pub fn into_future(self) -> <F as IntoFuture>::Future
[src]
pub fn into_future(self) -> <F as IntoFuture>::Future
[src]into_future
)Creates a future from a value.
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
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]
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> TokioAsyncReadCompatExt for T where
T: AsyncRead,
[src]
impl<T> TokioAsyncReadCompatExt for T where
T: AsyncRead,
[src]impl<T> TokioAsyncWriteCompatExt for T where
T: AsyncWrite,
[src]
impl<T> TokioAsyncWriteCompatExt for T where
T: AsyncWrite,
[src]fn compat_write(self) -> Compat<Self> where
Self: Sized,
[src]
fn compat_write(self) -> Compat<Self> where
Self: Sized,
[src]compat
only.Wraps self
with a compatibility layer that implements
futures_io::AsyncWrite
. Read more