Spec-Zone.ru › Tokio

Структура ReadBuf

pub struct ReadBuf<'a> { /* private fields */ }

Обёртка над буфером байтов, который постепенно заполняется и инициализируется.

Этот тип можно представить как «двойной курсор». Он отслеживает три области буфера: область в начале буфера, логически заполненную данными; область, которая была инициализирована, но ещё не заполнена логически; и область в конце, которая может быть неинициализированной. Гарантируется, что заполненная область является подмножеством инициализированной области.

Содержимое буфера можно представить следующим образом:

[             capacity              ]
[ filled |         unfilled         ]
[    initialized    | uninitialized ]

Деинициализация любых байтов из неинициализированной области приводит к неопределённому поведению, поскольку неизвестно, является ли эта область неинициализированной, и если окажется, что какая-либо её часть инициализирована, она должна остаться инициализированной.

Реализации

impl<'a> ReadBuf<'a>

pub fn new(buf: &'a mut [u8]) -> ReadBuf<'a>

Создает новый ReadBuf из полностью инициализированного буфера.

pub fn uninit(buf: &'a mut [MaybeUninit<u8>]) -> ReadBuf<'a>

Создает новый ReadBuf из буфера, который может быть неинициализирован.

Внутренний курсор пометит весь буфер как неинициализированный. Если известно, что часть буфера уже инициализирована, используйте assume_init для перемещения внутреннего курсора.

pub fn capacity(&self) -> usize

Возвращает общую емкость буфера.

pub fn filled(&self) -> &[u8] ⓘ

Возвращает общую ссылку на заполненную часть буфера.

pub fn filled_mut(&mut self) -> &mut [u8] ⓘ

Возвращает изменяемую ссылку на заполненную часть буфера.

pub fn take(&mut self, n: usize) -> ReadBuf<'_>

Возвращает новый ReadBuf, состоящий из незаполненной части длиной до n.

pub fn initialized(&self) -> &[u8] ⓘ

Возвращает общую ссылку на инициализированную часть буфера.

Она включает заполненную часть.

pub fn initialized_mut(&mut self) -> &mut [u8] ⓘ

Возвращает изменяемую ссылку на инициализированную часть буфера.

Она включает заполненную часть.

pub unsafe fn inner_mut(&mut self) -> &mut [MaybeUninit<u8>]

Возвращает изменяемую ссылку на весь буфер, не гарантируя, что он полностью инициализирован.

Элементы от 0 до self.filled().len() заполнены, а элементы от 0 до self.initialized().len() инициализированы (и поэтому могут быть преобразованы в &mut [u8]).

Вызывающий этот метод должен обеспечить соблюдение этих инвариантов. Например, если вызывающий инициализирует часть неинициализированного участка буфера, он должен вызвать assume_init, указав количество инициализированных байтов.

Безопасность

Вызывающий не должен деинициализировать уже инициализированные части буфера. Это включает любые байты в области, помеченной как неинициализированная с помощью ReadBuf.

pub unsafe fn unfilled_mut(&mut self) -> &mut [MaybeUninit<u8>]

Возвращает изменяемую ссылку на незаполненную часть буфера, не гарантируя, что она полностью инициализирована.

Безопасность

Вызывающий не должен деинициализировать уже инициализированные части буфера. Это включает любые байты в области, помеченной как неинициализированная с помощью ReadBuf.

pub fn initialize_unfilled(&mut self) -> &mut [u8] ⓘ

Возвращает изменяемую ссылку на незаполненную часть буфера, гарантируя ее полную инициализацию.

Поскольку ReadBuf отслеживает область буфера, которая была инициализирована, после первого использования эта операция фактически становится «бесплатной».

pub fn initialize_unfilled_to(&mut self, n: usize) -> &mut [u8] ⓘ

Возвращает изменяемую ссылку на первые n байт незаполненной части буфера, обеспечивая их полную инициализацию.

Паника

Вызывает панику, если self.remaining() меньше n.

pub fn remaining(&self) -> usize

Возвращает количество байт в конце среза, которые ещё не заполнены.

pub fn clear(&mut self)

Очищает буфер, сбрасывая заполненную область до пустого состояния.

Количество инициализированных байт не изменяется, а содержимое буфера не модифицируется.

pub fn advance(&mut self, n: usize)

Увеличивает размер заполненной области буфера.

Количество инициализированных байт не изменяется.

Паника

Вызывает панику, если заполненная область буфера станет больше инициализированной области.

pub fn set_filled(&mut self, n: usize)

Задаёт размер заполненной области буфера.

Количество инициализированных байт не изменяется.

Обратите внимание, что этот метод можно использовать не только для увеличения, но и для уменьшения заполненной области буфера (например, в реализации AsyncRead, сжимающей данные на месте).

Паника

Вызывает панику, если заполненная область буфера станет больше инициализированной области.

pub unsafe fn assume_init(&mut self, n: usize)

Утверждает, что первые n незаполненных байт буфера инициализированы.

ReadBuf предполагает, что байты никогда не деинициализируются, поэтому этот метод ничего не делает, если вызывается с меньшим количеством байт, чем уже известно как инициализированное.

Безопасность

Вызывающий код должен обеспечить, чтобы n незаполненных байт буфера уже были инициализированы.

pub fn put_slice(&mut self, buf: &[u8])

Добавляет данные в буфер, продвигая позицию записи и, возможно, также позицию инициализации.

Паника

Вызывает панику, если self.remaining() меньше buf.len().

Реализации трейтов

impl<'a> BufMut for ReadBuf<'a>

Доступно только при включённой функции крейта io-util.

fn remaining_mut(&self) -> usize

Возвращает количество байтов, которые можно записать, начиная с текущей позиции и до конца буфера. Подробнее

unsafe fn advance_mut(&mut self, cnt: usize)

Сдвигает внутренний курсор BufMut Подробнее

fn chunk_mut(&mut self) -> &mut UninitSlice

Возвращает изменяемый срез, начинающийся с текущей позиции BufMut, длина которого составляет от 0 до BufMut::remaining_mut(). Обратите внимание, что он может быть короче всего оставшегося пространства буфера (это позволяет реализовывать буфер без непрерывной области памяти). Подробнее

fn has_remaining_mut(&self) -> bool

Возвращает true, если в self есть место для дополнительных байтов. Подробнее

fn put<T>(&mut self, src: T)
where T: Buf, Self: Sized,

Переносит байты из src в self и сдвигает курсор на количество записанных байтов. Подробнее

fn put_slice(&mut self, src: &[u8])

Переносит байты из src в self и сдвигает курсор на количество записанных байтов. Подробнее

fn put_bytes(&mut self, val: u8, cnt: usize)

Записывает байты cnt со значением val в self. Подробнее

fn put_u8(&mut self, n: u8)

Записывает беззнаковое 8-битное целое число в self. Подробнее

fn put_i8(&mut self, n: i8)

Записывает знаковое 8-битное целое число в self. Подробнее

fn put_u16(&mut self, n: u16)

Записывает беззнаковое 16-битное целое число в self в порядке байтов от старшего к младшему. Подробнее

fn put_u16_le(&mut self, n: u16)

Записывает беззнаковое 16-битное целое число в self в порядке байтов от младшего к старшему. Подробнее

fn put_u16_ne(&mut self, n: u16)

Записывает беззнаковое 16-битное целое число в self в порядке байтов, принятом в целевой архитектуре. Подробнее

fn put_i16(&mut self, n: i16)

Записывает знаковое 16-битное целое число в self в порядке байтов от старшего к младшему. Подробнее

fn put_i16_le(&mut self, n: i16)

Записывает знаковое 16-битное целое число в self в порядке байтов от младшего к старшему. Подробнее

fn put_i16_ne(&mut self, n: i16)

Записывает знаковое 16-битное целое число в self в порядке байтов, принятом в целевой архитектуре. Подробнее

fn put_u32(&mut self, n: u32)

Записывает беззнаковое 32-битное целое число в self в порядке байтов от старшего к младшему. Подробнее

fn put_u32_le(&mut self, n: u32)

Записывает беззнаковое 32-битное целое число в self в порядке байтов от младшего к старшему. Подробнее

fn put_u32_ne(&mut self, n: u32)

Записывает беззнаковое 32-битное целое число в self в порядке байтов, принятом в целевой архитектуре. Подробнее

fn put_i32(&mut self, n: i32)

Записывает знаковое 32-битное целое число в self в порядке байтов от старшего к младшему. Подробнее

fn put_i32_le(&mut self, n: i32)

Записывает знаковое 32-битное целое число в self в порядке байтов от младшего к старшему. Подробнее

fn put_i32_ne(&mut self, n: i32)

Записывает знаковое 32-битное целое число в self в порядке байтов, принятом в целевой архитектуре. Подробнее

fn put_u64(&mut self, n: u64)

Записывает беззнаковое 64-битное целое число в self в порядке байтов от старшего к младшему. Подробнее

fn put_u64_le(&mut self, n: u64)

Записывает беззнаковое 64-битное целое число в self в порядке байтов от младшего к старшему. Подробнее

fn put_u64_ne(&mut self, n: u64)

Записывает беззнаковое 64-битное целое число в self в нативном порядке байтов. Подробнее

fn put_i64(&mut self, n: i64)

Записывает знаковое 64-битное целое число в self в порядке байтов от старшего к младшему. Подробнее

fn put_i64_le(&mut self, n: i64)

Записывает знаковое 64-битное целое число в self в порядке байтов от младшего к старшему. Подробнее

fn put_i64_ne(&mut self, n: i64)

Записывает знаковое 64-битное целое число в self в нативном порядке байтов. Подробнее

fn put_u128(&mut self, n: u128)

Записывает беззнаковое 128-битное целое число в self в порядке байтов от старшего к младшему. Подробнее

fn put_u128_le(&mut self, n: u128)

Записывает беззнаковое 128-битное целое число в self в порядке байтов от младшего к старшему. Подробнее

fn put_u128_ne(&mut self, n: u128)

Записывает беззнаковое 128-битное целое число в self в нативном порядке байтов. Подробнее

fn put_i128(&mut self, n: i128)

Записывает знаковое 128-битное целое число в self в порядке байтов от старшего к младшему. Подробнее

fn put_i128_le(&mut self, n: i128)

Записывает знаковое 128-битное целое число в self в порядке байтов от младшего к старшему. Подробнее

fn put_i128_ne(&mut self, n: i128)

Записывает 128-битное целое число со знаком в self в порядке байтов, соответствующем порядку байтов платформы. Подробнее

fn put_uint(&mut self, n: u64, nbytes: usize)

Записывает целое число без знака длиной n байт в self в порядке байтов от старшего к младшему. Подробнее

fn put_uint_le(&mut self, n: u64, nbytes: usize)

Записывает целое число без знака длиной n байт в self в порядке байтов от младшего к старшему. Подробнее

fn put_uint_ne(&mut self, n: u64, nbytes: usize)

Записывает целое число без знака длиной n байт в self в порядке байтов, соответствующем порядку байтов платформы. Подробнее

fn put_int(&mut self, n: i64, nbytes: usize)

Записывает младшие nbytes знакового целого числа в self в порядке байтов от старшего к младшему. Подробнее

fn put_int_le(&mut self, n: i64, nbytes: usize)

Записывает младшие nbytes знакового целого числа в self в порядке байтов от младшего к старшему. Подробнее

fn put_int_ne(&mut self, n: i64, nbytes: usize)

Записывает младшие nbytes знакового целого числа в self в порядке байтов, соответствующем порядку байтов платформы. Подробнее

fn put_f32(&mut self, n: f32)

Записывает число с плавающей точкой одинарной точности IEEE 754 (4 байта) в self в порядке байтов от старшего к младшему. Подробнее

fn put_f32_le(&mut self, n: f32)

Записывает число с плавающей точкой одинарной точности IEEE 754 (4 байта) в self в порядке байтов от младшего к старшему. Подробнее

fn put_f32_ne(&mut self, n: f32)

Записывает число с плавающей точкой одинарной точности IEEE 754 (4 байта) в self в порядке байтов, соответствующем порядку байтов платформы. Подробнее

fn put_f64(&mut self, n: f64)

Записывает число с плавающей точкой двойной точности IEEE754 (8 байт) в self в порядке байтов от старшего к младшему. Подробнее

fn put_f64_le(&mut self, n: f64)

Записывает число с плавающей точкой двойной точности IEEE754 (8 байт) в self в порядке байтов от младшего к старшему. Подробнее

fn put_f64_ne(&mut self, n: f64)

Записывает число с плавающей точкой двойной точности IEEE754 (8 байт) в self в порядке байтов, принятом в данной системе. Подробнее

fn limit(self, limit: usize) -> Limit<Self>
where Self: Sized,

Создает адаптер, который может записать не более limit байт в self. Подробнее

fn writer(self) -> Writer<Self>
where Self: Sized,

Доступно только при включенной функции крейта std.
Создает адаптер, реализующий трейт Write для self. Подробнее

fn chain_mut<U>(self, next: U) -> Chain<Self, U>
where U: BufMut, Self: Sized,

Создает адаптер, который соединяет этот буфер с другим. Подробнее

impl Debug for ReadBuf<'_>

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Форматирует значение с помощью указанного форматировщика. Подробнее

Реализации автоматических трейтов

impl<'a> !UnwindSafe for ReadBuf<'a>

impl<'a> Freeze for ReadBuf<'a>

impl<'a> RefUnwindSafe for ReadBuf<'a>

impl<'a> Send for ReadBuf<'a>

impl<'a> Sync for ReadBuf<'a>

impl<'a> Unpin for ReadBuf<'a>

impl<'a> UnsafeUnpin for ReadBuf<'a>

Общие реализации

impl<T> Any for T
where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

Получает TypeId self. Подробнее

impl<T> Borrow<T> for T
where T: ?Sized,

fn borrow(&self) -> &T

Неизменяемо заимствует из принадлежащего значения. Подробнее

impl<T> BorrowMut<T> for T
where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

Изменяемо заимствует из принадлежащего значения. Подробнее

impl<T> From<T> for T

fn from(t: T) -> T

Возвращает аргумент без изменений.

impl<T> Instrument for T

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью предоставленного Span, возвращая обёртку Instrumented. Подробнее

fn in_current_span(self) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью текущего Span, возвращая обёртку Instrumented. Подробнее

impl<T, U> Into<U> for T
where U: From<T>,

fn into(self) -> U

Вызывает U::from(self).

То есть это преобразование выполняет то, что выберет реализация From<T> for U.

impl<T, U> TryFrom<U> for T
where U: Into<T>,

type Error = Infallible

Тип, возвращаемый при ошибке преобразования.

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Выполняет преобразование.

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error

Тип, возвращаемый при ошибке преобразования.

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Выполняет преобразование.

impl<T> WithSubscriber for T

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Присоединяет к этому типу указанный Subscriber и возвращает обёртку WithDispatch. Подробнее

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Присоединяет к этому типу текущий по умолчанию Subscriber и возвращает обёртку WithDispatch. Подробнее

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/io/struct.ReadBuf.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API