Struct DuplexStream
pub struct DuplexStream { /* private fields */ }
Available on crate feature
io-util only.A bidirectional pipe to read and write bytes in memory.
A pair of DuplexStreams are created together, and they act as a “channel” that can be used as in-memory IO types. Writing to one of the pairs will allow that data to be read from the other, and vice versa.
Closing a DuplexStream
If one end of the DuplexStream channel is dropped, any pending reads on the other side will continue to read data until the buffer is drained, then they will signal EOF by returning 0 bytes. Any writes to the other side, including pending ones (that are waiting for free space in the buffer) will return Err(BrokenPipe) immediately.
Example
let (mut client, mut server) = tokio::io::duplex(64);
client.write_all(b"ping").await?;
let mut buf = [0u8; 4];
server.read_exact(&mut buf).await?;
assert_eq!(&buf, b"ping");
server.write_all(b"pong").await?;
client.read_exact(&mut buf).await?;
assert_eq!(&buf, b"pong");Trait Implementations
impl AsyncRead for DuplexStream
impl AsyncWrite for DuplexStream
fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>
Attempt to write bytes from
buf into the object. Read more
fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize, Error>>
Like
poll_write, except that it writes from a slice of buffers. Read more
fn is_write_vectored(&self) -> bool
Determines if this writer has an efficient
poll_write_vectored implementation. Read more
impl Debug for DuplexStream
impl Drop for DuplexStream
Auto Trait Implementations
impl !RefUnwindSafe for DuplexStream
impl !UnwindSafe for DuplexStream
impl Freeze for DuplexStream
impl Send for DuplexStream
impl Sync for DuplexStream
impl Unpin for DuplexStream
impl UnsafeUnpin for DuplexStream
Blanket Implementations
impl<R> AsyncReadExt for R
fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where Self: Unpin,
Available on crate feature
io-util only.Pulls some bytes from this source into the specified buffer, returning how many bytes were read. Read more
fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
Available on crate feature
io-util only.Pulls some bytes from this source into the specified buffer, advancing the buffer’s internal cursor. Read more
fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where Self: Unpin,
Available on crate feature
io-util only.Reads the exact number of bytes required to fill
buf. Read more
fn read_u8(&mut self) -> ReadU8<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an unsigned 8 bit integer from the underlying reader. Read more
fn read_i8(&mut self) -> ReadI8<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads a signed 8 bit integer from the underlying reader. Read more
fn read_u16(&mut self) -> ReadU16<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an unsigned 16-bit integer in big-endian order from the underlying reader. Read more
fn read_i16(&mut self) -> ReadI16<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads a signed 16-bit integer in big-endian order from the underlying reader. Read more
fn read_u32(&mut self) -> ReadU32<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an unsigned 32-bit integer in big-endian order from the underlying reader. Read more
fn read_i32(&mut self) -> ReadI32<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads a signed 32-bit integer in big-endian order from the underlying reader. Read more
fn read_u64(&mut self) -> ReadU64<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an unsigned 64-bit integer in big-endian order from the underlying reader. Read more
fn read_i64(&mut self) -> ReadI64<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an signed 64-bit integer in big-endian order from the underlying reader. Read more
fn read_u128(&mut self) -> ReadU128<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an unsigned 128-bit integer in big-endian order from the underlying reader. Read more
fn read_i128(&mut self) -> ReadI128<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an signed 128-bit integer in big-endian order from the underlying reader. Read more
fn read_f32(&mut self) -> ReadF32<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an 32-bit floating point type in big-endian order from the underlying reader. Read more
fn read_f64(&mut self) -> ReadF64<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an 64-bit floating point type in big-endian order from the underlying reader. Read more
fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an unsigned 16-bit integer in little-endian order from the underlying reader. Read more
fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads a signed 16-bit integer in little-endian order from the underlying reader. Read more
fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an unsigned 32-bit integer in little-endian order from the underlying reader. Read more
fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads a signed 32-bit integer in little-endian order from the underlying reader. Read more
fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an unsigned 64-bit integer in little-endian order from the underlying reader. Read more
fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an signed 64-bit integer in little-endian order from the underlying reader. Read more
fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an unsigned 128-bit integer in little-endian order from the underlying reader. Read more
fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an signed 128-bit integer in little-endian order from the underlying reader. Read more
fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an 32-bit floating point type in little-endian order from the underlying reader. Read more
fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Reads an 64-bit floating point type in little-endian order from the underlying reader. Read more
fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where Self: Unpin,
Available on crate feature
io-util only.Reads all bytes until EOF in this source, placing them into
buf. Read more
fn read_to_string<'a>( &'a mut self, dst: &'a mut String, ) -> ReadToString<'a, Self>where Self: Unpin,
Available on crate feature
io-util only.Reads all bytes until EOF in this source, appending them to
buf. Read more
impl<W> AsyncWriteExt for Wwhere W: AsyncWrite + ?Sized,
fn write<'a>(&'a mut self, src: &'a [u8]) -> Write<'a, Self>where Self: Unpin,
Available on crate feature
io-util only.Writes a buffer into this writer, returning how many bytes were written. Read more
fn write_vectored<'a, 'b>( &'a mut self, bufs: &'a [IoSlice<'b>], ) -> WriteVectored<'a, 'b, Self>where Self: Unpin,
Available on crate feature
io-util only.fn write_buf<'a, B>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B>
Available on crate feature
io-util only.Writes a buffer into this writer, advancing the buffer’s internal cursor. Read more
fn write_all_buf<'a, B>( &'a mut self, src: &'a mut B, ) -> WriteAllBuf<'a, Self, B>
Available on crate feature
io-util only.Attempts to write an entire buffer into this writer. Read more
fn write_all<'a>(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self>where Self: Unpin,
Available on crate feature
io-util only.Attempts to write an entire buffer into this writer. Read more
fn write_u8(&mut self, n: u8) -> WriteU8<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an unsigned 8-bit integer to the underlying writer. Read more
fn write_i8(&mut self, n: i8) -> WriteI8<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes a signed 8-bit integer to the underlying writer. Read more
fn write_u16(&mut self, n: u16) -> WriteU16<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an unsigned 16-bit integer in big-endian order to the underlying writer. Read more
fn write_i16(&mut self, n: i16) -> WriteI16<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes a signed 16-bit integer in big-endian order to the underlying writer. Read more
fn write_u32(&mut self, n: u32) -> WriteU32<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an unsigned 32-bit integer in big-endian order to the underlying writer. Read more
fn write_i32(&mut self, n: i32) -> WriteI32<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes a signed 32-bit integer in big-endian order to the underlying writer. Read more
fn write_u64(&mut self, n: u64) -> WriteU64<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an unsigned 64-bit integer in big-endian order to the underlying writer. Read more
fn write_i64(&mut self, n: i64) -> WriteI64<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an signed 64-bit integer in big-endian order to the underlying writer. Read more
fn write_u128(&mut self, n: u128) -> WriteU128<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an unsigned 128-bit integer in big-endian order to the underlying writer. Read more
fn write_i128(&mut self, n: i128) -> WriteI128<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an signed 128-bit integer in big-endian order to the underlying writer. Read more
fn write_f32(&mut self, n: f32) -> WriteF32<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an 32-bit floating point type in big-endian order to the underlying writer. Read more
fn write_f64(&mut self, n: f64) -> WriteF64<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an 64-bit floating point type in big-endian order to the underlying writer. Read more
fn write_u16_le(&mut self, n: u16) -> WriteU16Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an unsigned 16-bit integer in little-endian order to the underlying writer. Read more
fn write_i16_le(&mut self, n: i16) -> WriteI16Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes a signed 16-bit integer in little-endian order to the underlying writer. Read more
fn write_u32_le(&mut self, n: u32) -> WriteU32Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an unsigned 32-bit integer in little-endian order to the underlying writer. Read more
fn write_i32_le(&mut self, n: i32) -> WriteI32Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes a signed 32-bit integer in little-endian order to the underlying writer. Read more
fn write_u64_le(&mut self, n: u64) -> WriteU64Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an unsigned 64-bit integer in little-endian order to the underlying writer. Read more
fn write_i64_le(&mut self, n: i64) -> WriteI64Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an signed 64-bit integer in little-endian order to the underlying writer. Read more
fn write_u128_le(&mut self, n: u128) -> WriteU128Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an unsigned 128-bit integer in little-endian order to the underlying writer. Read more
fn write_i128_le(&mut self, n: i128) -> WriteI128Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an signed 128-bit integer in little-endian order to the underlying writer. Read more
fn write_f32_le(&mut self, n: f32) -> WriteF32Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an 32-bit floating point type in little-endian order to the underlying writer. Read more
fn write_f64_le(&mut self, n: f64) -> WriteF64Le<&mut Self>where Self: Unpin,
Available on crate feature
io-util only.Writes an 64-bit floating point type in little-endian order to the underlying writer. Read more
impl<T> BorrowMut<T> for Twhere T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Instrument for T
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
impl<T> WithSubscriber for T
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/io/struct.DuplexStream.html