Struct std::io::ReadBuf [−][src]
pub struct ReadBuf<'a> { /* fields omitted */ }
Expand description
字节缓冲区的包装器,它被增量填充和初始化。
这种类型是一种 “double cursor”。 它跟踪缓冲区中的三个区域:缓冲区开头的区域已被逻辑填充数据,已在某个时刻初始化但尚未逻辑填充的区域,以及完全未初始化的末尾区域。 填充区域保证是初始化区域的子集。
总之,缓冲区的内容可以可视化为:
[ capacity ]
[ filled | unfilled ]
[ initialized | uninitialized ]
Implementations
从完全初始化的缓冲区创建一个新的 ReadBuf
。
从完全未初始化的缓冲区创建一个新的 ReadBuf
。
如果已知缓冲区的一部分已经初始化,请使用 assume_init
。
返回缓冲区的总容量。
pub fn filled_mut(&mut self) -> &mut [u8]ⓘ
pub fn filled_mut(&mut self) -> &mut [u8]ⓘ
返回对缓冲区已填充部分的可变引用。
pub fn initialized(&self) -> &[u8]ⓘ
pub fn initialized(&self) -> &[u8]ⓘ
返回对缓冲区初始化部分的共享引用。
这包括填充的部分。
pub fn initialized_mut(&mut self) -> &mut [u8]ⓘ
pub fn initialized_mut(&mut self) -> &mut [u8]ⓘ
返回对缓冲区初始化部分的可变引用。
这包括填充的部分。
pub unsafe fn unfilled_mut(&mut self) -> &mut [MaybeUninit<u8>]ⓘ
pub unsafe fn unfilled_mut(&mut self) -> &mut [MaybeUninit<u8>]ⓘ
pub fn uninitialized_mut(&mut self) -> &mut [MaybeUninit<u8>]ⓘ
pub fn uninitialized_mut(&mut self) -> &mut [MaybeUninit<u8>]ⓘ
返回对缓冲区未初始化部分的可变引用。
取消初始化这些字节中的任何一个都是安全的。
pub fn initialize_unfilled(&mut self) -> &mut [u8]ⓘ
pub fn initialize_unfilled(&mut self) -> &mut [u8]ⓘ
返回对缓冲区未填充部分的可变引用,确保它已完全初始化。
由于 ReadBuf
跟踪已初始化的缓冲区区域,因此在第一次使用后实际上是 “free”。
pub fn initialize_unfilled_to(&mut self, n: usize) -> &mut [u8]ⓘ
pub fn initialize_unfilled_to(&mut self, n: usize) -> &mut [u8]ⓘ
返回切片末尾尚未填充的字节数。
清除缓冲区,将填充区域重置为空。
初始化的字节数不变,缓冲区的内容也不变。
设置缓冲区填充区域的大小。
初始化字节数不变。
请注意,除了增加缓冲区的填充区域 (例如,通过就地压缩数据的 Read
实现) 之外,这还可用于缩小缓冲区的填充区域。
Panics
如果缓冲区的填充区域大于初始化区域,就会出现 panics。
断言缓冲区的前 n
个未填充字节已初始化。
ReadBuf
假定字节永远不会被反初始化,因此当使用少于已知已初始化字节的字节调用此方法时,不会执行任何操作。
Safety
调用者必须确保缓冲区的前 n
个未填充字节已经初始化。
返回已填充的字节数。
返回已初始化的字节数。