Структура Duplex Stream
pub struct DuplexStream { /* private fields */ }
Доступно только при включённой функции crate
io-util.Двунаправленный канал для чтения и записи байтов в памяти.
Пара DuplexStream создаётся одновременно; они образуют «канал», который можно использовать как типы ввода-вывода в памяти. Запись в один из пары позволяет прочитать эти данные с другого конца, и наоборот.
Закрытие DuplexStream
Если один конец канала DuplexStream отброшен, все ожидающие чтения на другой стороне продолжат читать данные, пока буфер не опустеет, а затем сообщат о достижении конца файла, вернув 0 байт. Любые записи на другую сторону, включая ожидающие записи (которые ждут освобождения места в буфере), немедленно вернут Err(BrokenPipe).
Пример
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");Реализации трейтов
impl AsyncRead for DuplexStream
impl AsyncWrite for DuplexStream
fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>
Пытается записать байты из
buf в объект. Подробнее
fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize, Error>>
Как
poll_write, но запись выполняется из среза буферов. Подробнее
fn is_write_vectored(&self) -> bool
Определяет, реализует ли этот писатель эффективный метод
poll_write_vectored. Подробнее
impl Debug for DuplexStream
impl Drop for DuplexStream
Реализации автоматических трейтов
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
Обобщённые реализации
impl<R> AsyncReadExt for R
fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Извлекает несколько байтов из этого источника в указанный буфер и возвращает количество прочитанных байтов. Подробнее
fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
Доступно только при включённой функции крейта
io-util.Извлекает несколько байтов из этого источника в указанный буфер, перемещая внутренний курсор буфера. Подробнее
fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Считывает ровно столько байтов, сколько необходимо для заполнения
buf. Подробнее
fn read_u8(&mut self) -> ReadU8<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Считывает беззнаковое 8-битное целое число из базового средства чтения. Подробнее
fn read_i8(&mut self) -> ReadI8<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Считывает знаковое 8-битное целое число из базового средства чтения. Подробнее
fn read_u16(&mut self) -> ReadU16<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Считывает беззнаковое 16-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее
fn read_i32(&mut self) -> ReadI32<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Читает знаковое 32-битное целое число в порядке байтов от старшего к младшему из базового средства чтения. Подробнее
fn read_u64(&mut self) -> ReadU64<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Читает беззнаковое 64-битное целое число в порядке байтов от старшего к младшему из базового средства чтения. Подробнее
fn read_i64(&mut self) -> ReadI64<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Читает знаковое 64-битное целое число в порядке байтов от старшего к младшему из базового средства чтения. Подробнее
fn read_u128(&mut self) -> ReadU128<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Читает беззнаковое 128-битное целое число в порядке байтов от старшего к младшему из базового средства чтения. Подробнее
fn read_i128(&mut self) -> ReadI128<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Читает знаковое 128-битное целое число в порядке байтов от старшего к младшему из базового средства чтения. Подробнее
fn read_f32(&mut self) -> ReadF32<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Читает 32-битное число с плавающей точкой в порядке байтов от старшего к младшему из базового средства чтения. Подробнее
fn read_f64(&mut self) -> ReadF64<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Читает 64-битное число с плавающей точкой в порядке байтов от старшего к младшему из базового средства чтения. Подробнее
fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Читает беззнаковое 16-битное целое число в порядке байтов от младшего к старшему из базового средства чтения. Подробнее
fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Читает знаковое 16-битное целое число в порядке байтов от младшего к старшему из базового средства чтения. Подробнее
fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Читает беззнаковое 32-битное целое число в порядке байтов от младшего к старшему из базового средства чтения. Подробнее
fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>where Self: Unpin,
Доступно только при включённой возможности крейта
io-util.Считывает знаковое 32-битное целое число в порядке от младшего байта к старшему из базового средства чтения. Подробнее
fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>where Self: Unpin,
Доступно только при включённой возможности крейта
io-util.Считывает беззнаковое 64-битное целое число в порядке от младшего байта к старшему из базового средства чтения. Подробнее
fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>where Self: Unpin,
Доступно только при включённой возможности крейта
io-util.Считывает знаковое 64-битное целое число в порядке от младшего байта к старшему из базового средства чтения. Подробнее
fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>where Self: Unpin,
Доступно только при включённой возможности крейта
io-util.Считывает беззнаковое 128-битное целое число в порядке от младшего байта к старшему из базового средства чтения. Подробнее
fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>where Self: Unpin,
Доступно только при включённой возможности крейта
io-util.Считывает знаковое 128-битное целое число в порядке от младшего байта к старшему из базового средства чтения. Подробнее
fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>where Self: Unpin,
Доступно только при включённой возможности крейта
io-util.Считывает число с плавающей запятой одинарной точности (32 бита) в порядке от младшего байта к старшему из базового средства чтения. Подробнее
fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>where Self: Unpin,
Доступно только при включённой возможности крейта
io-util.Считывает число с плавающей запятой двойной точности (64 бита) в порядке от младшего байта к старшему из базового средства чтения. Подробнее
fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where Self: Unpin,
Доступно только при включённой возможности крейта
io-util.Считывает все байты из этого источника до конца файла и помещает их в
buf. Подробнее
fn read_to_string<'a>( &'a mut self, dst: &'a mut String, ) -> ReadToString<'a, Self>where Self: Unpin,
Доступно только при включённой возможности крейта
io-util.Считывает все байты из этого источника до конца файла и добавляет их в
buf. Подробнее
impl<W> AsyncWriteExt for Wwhere W: AsyncWrite + ?Sized,
fn write<'a>(&'a mut self, src: &'a [u8]) -> Write<'a, Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Записывает буфер в этот объект записи и возвращает количество записанных байтов. Подробнее
fn write_vectored<'a, 'b>( &'a mut self, bufs: &'a [IoSlice<'b>], ) -> WriteVectored<'a, 'b, Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.fn write_buf<'a, B>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B>
Доступно только при включённой функции крейта
io-util.Записывает буфер в этот объект записи, сдвигая внутренний курсор буфера. Подробнее
fn write_all_buf<'a, B>( &'a mut self, src: &'a mut B, ) -> WriteAllBuf<'a, Self, B>
Доступно только при включённой функции крейта
io-util.Пытается записать весь буфер в этот объект записи. Подробнее
fn write_all<'a>(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Пытается записать весь буфер в этот объект записи. Подробнее
fn write_u8(&mut self, n: u8) -> WriteU8<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Записывает беззнаковое 8-битное целое число в базовый объект записи. Подробнее
fn write_i16(&mut self, n: i16) -> WriteI16<&mut Self>where Self: Unpin,
Доступно только при включённой функции crate
io-util.Записывает знаковое 16-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее
fn write_u32(&mut self, n: u32) -> WriteU32<&mut Self>where Self: Unpin,
Доступно только при включённой функции crate
io-util.Записывает беззнаковое 32-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее
fn write_i32(&mut self, n: i32) -> WriteI32<&mut Self>where Self: Unpin,
Доступно только при включённой функции crate
io-util.Записывает знаковое 32-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее
fn write_u64(&mut self, n: u64) -> WriteU64<&mut Self>where Self: Unpin,
Доступно только при включённой функции crate
io-util.Записывает беззнаковое 64-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее
fn write_i64(&mut self, n: i64) -> WriteI64<&mut Self>where Self: Unpin,
Доступно только при включённой функции crate
io-util.Записывает знаковое 64-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее
fn write_u128(&mut self, n: u128) -> WriteU128<&mut Self>where Self: Unpin,
Доступно только при включённой функции crate
io-util.Записывает беззнаковое 128-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее
fn write_i128(&mut self, n: i128) -> WriteI128<&mut Self>where Self: Unpin,
Доступно только при включённой функции crate
io-util.Записывает знаковое 128-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее
fn write_u16_le(&mut self, n: u16) -> WriteU16Le<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Записывает беззнаковое 16-битное целое число в порядке от младшего байта к старшему в базовый объект записи. Подробнее
fn write_i16_le(&mut self, n: i16) -> WriteI16Le<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Записывает знаковое 16-битное целое число в порядке от младшего байта к старшему в базовый объект записи. Подробнее
fn write_u32_le(&mut self, n: u32) -> WriteU32Le<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Записывает беззнаковое 32-битное целое число в порядке от младшего байта к старшему в базовый объект записи. Подробнее
fn write_i32_le(&mut self, n: i32) -> WriteI32Le<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Записывает знаковое 32-битное целое число в порядке от младшего байта к старшему в базовый объект записи. Подробнее
fn write_u64_le(&mut self, n: u64) -> WriteU64Le<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Записывает беззнаковое 64-битное целое число в порядке от младшего байта к старшему в базовый объект записи. Подробнее
fn write_i64_le(&mut self, n: i64) -> WriteI64Le<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Записывает знаковое 64-битное целое число в порядке от младшего байта к старшему в базовый объект записи. Подробнее
fn write_u128_le(&mut self, n: u128) -> WriteU128Le<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Записывает беззнаковое 128-битное целое число в порядке от младшего байта к старшему в базовый объект записи. Подробнее
fn write_i128_le(&mut self, n: i128) -> WriteI128Le<&mut Self>where Self: Unpin,
Доступно только при включённой функции крейта
io-util.Записывает знаковое 128-битное целое число в порядке от младшего байта к старшему в базовый объект записи. Подробнее
fn write_f32_le(&mut self, n: f32) -> WriteF32Le<&mut Self>where Self: Unpin,
Доступно только при включённой возможности крейта
io-util.Записывает значение типа с плавающей точкой и шириной 32 бита в формате little-endian в базовый поток записи. Подробнее
fn write_f64_le(&mut self, n: f64) -> WriteF64Le<&mut Self>where Self: Unpin,
Доступно только при включённой возможности крейта
io-util.Записывает значение типа с плавающей точкой и шириной 64 бита в формате little-endian в базовый поток записи. Подробнее
impl<T> BorrowMut<T> for Twhere T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
Изменяемо заимствует данные из принадлежащего значения. Подробнее
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> ⓘ
Присоединяет текущий по умолчанию
Subscriber к этому типу, возвращая обёртку WithDispatch. Подробнее
MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/io/struct.DuplexStream.html