Структура BufStream
pub struct BufStream<RW> { /* private fields */ }
io-util.Оборачивает тип, реализующий AsyncWrite и AsyncRead, и буферизует ввод и вывод.
Работа напрямую с объектом, реализующим AsyncWrite и AsyncRead, может быть крайне неэффективной. Например, каждый write, каким бы небольшим он ни был, должен проходить через интерфейс системных вызовов; аналогично и для каждой операции чтения. Типы BufWriter и BufReader помогают решить эти проблемы соответственно, но только в одном направлении. BufStream оборачивает один тип другим, чтобы буферизовать оба направления. Подробнее см. в их документации.
Реализации
impl<RW: AsyncRead + AsyncWrite> BufStream<RW>
pub fn with_capacity( reader_capacity: usize, writer_capacity: usize, stream: RW, ) -> BufStream<RW>
pub fn get_ref(&self) -> &RW
Возвращает ссылку на базовый объект ввода-вывода.
Не рекомендуется напрямую читать данные из базового объекта ввода-вывода.
pub fn get_mut(&mut self) -> &mut RW
Возвращает изменяемую ссылку на базовый объект ввода-вывода.
Не рекомендуется напрямую читать данные из базового объекта ввода-вывода.
pub fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut RW>
Возвращает закреплённую изменяемую ссылку на базовый объект ввода-вывода.
Не рекомендуется напрямую читать данные из базового объекта ввода-вывода.
pub fn into_inner(self) -> RW
Потребляет этот BufStream и возвращает базовый объект ввода-вывода.
Обратите внимание: все оставшиеся данные во внутреннем буфере будут потеряны.
Реализации трейтов
impl<RW: AsyncRead + AsyncWrite> AsyncBufRead for BufStream<RW>
impl<RW: AsyncRead + AsyncWrite + AsyncSeek> AsyncSeek for BufStream<RW>
Перейти к смещению в байтах в базовом потоке.
Позиция, используемая для перемещения с помощью SeekFrom::Current(_), — это позиция базового потока, если бы у BufStream не было внутреннего буфера.
При перемещении внутренний буфер всегда отбрасывается, даже если позиция перемещения в противном случае находилась бы внутри него. Это гарантирует, что вызов .into_inner() сразу после перемещения вернет базовый считыватель в ту же позицию.
Дополнительные сведения см. в AsyncSeek.
Примечание. В редком случае, когда выполняется перемещение с помощью SeekFrom::Current(n), где вычитание n и длины внутреннего буфера приводит к переполнению i64, вместо одного будет выполнено два перемещения. Если второе перемещение возвращает Err, базовый считыватель останется в той же позиции, в которой он оказался бы при вызове seek с SeekFrom::Current(0).
impl<RW: AsyncRead + AsyncWrite> AsyncWrite for BufStream<RW>
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>>
poll_write, но записывает данные из среза буферов. Подробнее
fn is_write_vectored(&self) -> bool
poll_write_vectored. Подробнее
impl<'__pin, RW> Unpin for BufStream<RW>where PinnedFieldsOf<__Origin<'__pin, RW>>: Unpin,
Реализации автоматических трейтов
impl<RW> Freeze for BufStream<RW>where RW: Freeze,
impl<RW> RefUnwindSafe for BufStream<RW>where RW: RefUnwindSafe,
impl<RW> Send for BufStream<RW>where RW: Send,
impl<RW> Sync for BufStream<RW>where RW: Sync,
impl<RW> UnsafeUnpin for BufStream<RW>where RW: UnsafeUnpin,
impl<RW> UnwindSafe for BufStream<RW>where RW: UnwindSafe,
Общие реализации
impl<R> AsyncBufReadExt for Rwhere R: AsyncBufRead + ?Sized,
fn read_until<'a>( &'a mut self, byte: u8, buf: &'a mut Vec<u8>, ) -> ReadUntil<'a, Self>where Self: Unpin,
io-util.buf, пока не встретится разделитель byte или не будет достигнут конец файла. Подробнее
fn read_line<'a>(&'a mut self, buf: &'a mut String) -> ReadLine<'a, Self>where Self: Unpin,
io-util.fn split(self, byte: u8) -> Split<Self>
io-util.byte. Подробнее
fn fill_buf(&mut self) -> FillBuf<'_, Self>where Self: Unpin,
io-util.fn consume(&mut self, amt: usize)where Self: Unpin,
io-util.fn lines(self) -> Lines<Self>where Self: Sized,
io-util.BufRead::lines. Подробнее
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.fn read_i8(&mut self) -> ReadI8<&mut Self>where Self: Unpin,
io-util.fn read_u16(&mut self) -> ReadU16<&mut Self>where Self: Unpin,
io-util.fn read_i32(&mut self) -> ReadI32<&mut Self>where Self: Unpin,
io-util.fn read_u64(&mut self) -> ReadU64<&mut Self>where Self: Unpin,
io-util.fn read_i64(&mut self) -> ReadI64<&mut Self>where Self: Unpin,
io-util.fn read_u128(&mut self) -> ReadU128<&mut Self>where Self: Unpin,
io-util.fn read_i128(&mut self) -> ReadI128<&mut Self>where Self: Unpin,
io-util.fn read_f32(&mut self) -> ReadF32<&mut Self>where Self: Unpin,
io-util.fn read_f64(&mut self) -> ReadF64<&mut Self>where Self: Unpin,
io-util.fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>where Self: Unpin,
io-util.fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>where Self: Unpin,
io-util.fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>where Self: Unpin,
io-util.fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>where Self: Unpin,
io-util.fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>where Self: Unpin,
io-util.fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>where Self: Unpin,
io-util.fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>where Self: Unpin,
io-util.fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>where Self: Unpin,
io-util.fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>where Self: Unpin,
io-util.fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>where Self: Unpin,
io-util.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<S> AsyncSeekExt for S
fn seek(&mut self, pos: SeekFrom) -> Seek<'_, Self>where Self: Unpin,
io-util.fn rewind(&mut self) -> Seek<'_, Self>where Self: Unpin,
io-util.fn stream_position(&mut self) -> Seek<'_, Self>where Self: Unpin,
io-util.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.fn write_i16(&mut self, n: i16) -> WriteI16<&mut Self>where Self: Unpin,
io-util.fn write_u32(&mut self, n: u32) -> WriteU32<&mut Self>where Self: Unpin,
io-util.fn write_i32(&mut self, n: i32) -> WriteI32<&mut Self>where Self: Unpin,
io-util.fn write_u64(&mut self, n: u64) -> WriteU64<&mut Self>where Self: Unpin,
io-util.fn write_i64(&mut self, n: i64) -> WriteI64<&mut Self>where Self: Unpin,
io-util.fn write_u128(&mut self, n: u128) -> WriteU128<&mut Self>where Self: Unpin,
io-util.fn write_i128(&mut self, n: i128) -> WriteI128<&mut Self>where Self: Unpin,
io-util.fn write_u16_le(&mut self, n: u16) -> WriteU16Le<&mut Self>where Self: Unpin,
io-util.fn write_i16_le(&mut self, n: i16) -> WriteI16Le<&mut Self>where Self: Unpin,
io-util.fn write_u32_le(&mut self, n: u32) -> WriteU32Le<&mut Self>where Self: Unpin,
io-util.fn write_i32_le(&mut self, n: i32) -> WriteI32Le<&mut Self>where Self: Unpin,
io-util.fn write_u64_le(&mut self, n: u64) -> WriteU64Le<&mut Self>where Self: Unpin,
io-util.fn write_i64_le(&mut self, n: i64) -> WriteI64Le<&mut Self>where Self: Unpin,
io-util.fn write_u128_le(&mut self, n: u128) -> WriteU128Le<&mut Self>where Self: Unpin,
io-util.fn write_i128_le(&mut self, n: i128) -> WriteI128Le<&mut Self>where Self: Unpin,
io-util.fn write_f32_le(&mut self, n: f32) -> WriteF32Le<&mut Self>where Self: Unpin,
io-util.fn write_f64_le(&mut self, n: f64) -> WriteF64Le<&mut Self>where Self: Unpin,
io-util.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.BufStream.html