Структура BufReader
pub struct BufReader<R> { /* private fields */ }
io-util.Структура BufReader добавляет буферизацию к любому средству чтения.
Прямая работа с экземпляром AsyncRead может быть крайне неэффективной. BufReader выполняет крупные и редкие операции чтения из базового AsyncRead и хранит результаты во внутреннем буфере.
BufReader может повысить скорость программ, которые выполняют небольшие и повторяющиеся операции чтения из одного и того же файла или сетевого сокета. Это не помогает при чтении очень больших объёмов данных за один раз или при чтении всего один или несколько раз. Это также не даёт преимуществ при чтении из источника, уже находящегося в памяти, например Vec<u8>.
При удалении BufReader содержимое его буфера будет отброшено. Создание нескольких экземпляров BufReader для одного и того же потока может привести к потере данных.
Реализации
impl<R: AsyncRead> BufReader<R>
pub fn new(inner: R) -> Self
Создаёт новый BufReader с буфером стандартного размера. В настоящее время его размер составляет 8 КБ, но в будущем он может измениться.
pub fn with_capacity(capacity: usize, inner: R) -> Self
Создаёт новый BufReader с указанным размером буфера.
pub fn get_ref(&self) -> &R
Возвращает ссылку на базовое средство чтения.
Не рекомендуется напрямую читать из базового средства чтения.
pub fn get_mut(&mut self) -> &mut R
Возвращает изменяемую ссылку на базовое средство чтения.
Не рекомендуется напрямую читать из базового средства чтения.
pub fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut R>
Возвращает закреплённую изменяемую ссылку на базовое средство чтения.
Не рекомендуется напрямую читать из базового средства чтения.
pub fn into_inner(self) -> R
Потребляет этот BufReader и возвращает базовое средство чтения.
Обратите внимание, что все оставшиеся данные во внутреннем буфере будут потеряны.
Реализации трейтов
impl<R: AsyncRead> AsyncBufRead for BufReader<R>
impl<R: AsyncRead + AsyncSeek> AsyncSeek for BufReader<R>
Перемещает указатель на смещение в байтах во внутреннем источнике чтения.
Позиция, используемая для перемещения с помощью SeekFrom::Current(_), — это позиция, в которой находился бы внутренний источник чтения, если бы у BufReader не было внутреннего буфера.
Перемещение всегда сбрасывает внутренний буфер, даже если целевая позиция в противном случае находилась бы внутри него. Это гарантирует, что вызов .into_inner() сразу после перемещения вернет внутренний источник чтения в ту же позицию.
Подробнее см. AsyncSeek.
Примечание: в особом случае, когда выполняется перемещение с помощью SeekFrom::Current(n), при котором вычитание длины внутреннего буфера из n приводит к переполнению i64, вместо одного будет выполнено два перемещения. Если второе перемещение вернет Err, внутренний источник чтения останется в той же позиции, в которой он оказался бы при вызове seek с SeekFrom::Current(0).
impl<R: AsyncRead + AsyncWrite> AsyncWrite for BufReader<R>
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, R> Unpin for BufReader<R>where PinnedFieldsOf<__Origin<'__pin, R>>: Unpin,
Автоматические реализации трейтов
impl<R> Freeze for BufReader<R>where R: Freeze,
impl<R> RefUnwindSafe for BufReader<R>where R: RefUnwindSafe,
impl<R> Send for BufReader<R>where R: Send,
impl<R> Sync for BufReader<R>where R: Sync,
impl<R> UnsafeUnpin for BufReader<R>where R: UnsafeUnpin,
impl<R> UnwindSafe for BufReader<R>where R: 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 или не будет достигнут конец файла (EOF). Подробнее
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.BufReader.html