Struct std::io::BorrowedCursor
pub struct BorrowedCursor<'a> { /* private fields */ }BorrowedBuf 未填充部分的可写视图。
提供对底层 BorrowedBuf 的已初始化和未初始化部分的访问。 可以使用 append 将数据直接写入游标,也可以通过获取部分或全部游标的切片并写入切片来间接写入数据。
在间接情况下,调用者必须在写入后调用 advance 来通知游标已经写入了多少字节。
一旦数据被写入游标,它就成为底层 BorrowedBuf 的填充部分的一部分,并且不能再被游标访问或重写。 即,游标跟踪底层 BorrowedBuf 的未填充部分。
生命周期 'a 是底层缓冲区的生命周期的界限 (这意味着它是该缓冲区中数据的传递界限)。
Implementations
impl<'a> BorrowedCursor<'a>
reborrow
通过使用较小的生命周期克隆它来重新借用此游标。
pub fn reborrow<'this>(&'this mut self) -> BorrowedCursor<'this>由于游标保持对其底层缓冲区的唯一访问,因此当新游标存在时,借用的游标不可访问。
capacity
返回游标中的可用空间。
pub fn capacity(&self) -> usizewritten
返回自从 BorrowedBuf 创建以来写入此游标的字节数。
pub fn written(&self) -> usize请注意,如果此游标是另一个游标的重新借用克隆,则返回的计数是通过任一游标写入的计数,而不是自游标重新借用以来的计数。
init_ref
将共享引用返回到游标的初始化部分。
pub fn init_ref(&self) -> &[u8]init_mut
返回游标的初始化部分的,可变引用。
pub fn init_mut(&mut self) -> &mut [u8]uninit_mut
将一个,可变引用,返回到游标的未初始化部分。
pub fn uninit_mut(&mut self) -> &mut [MaybeUninit<u8>]取消初始化这些字节中的任何一个都是安全的。
as_mut
返回对整个游标的引用。
pub unsafe fn as_mut(&mut self) -> &mut [MaybeUninit<u8>]Safety
调用者不得取消初始化游标初始化部分中的任何字节。
advance
通过断言 n 字节已被填充来前进游标。
pub unsafe fn advance(&mut self, n: usize) -> &mut Self推进后,n 字节不再可以通过游标访问,只能通过底层缓冲区访问。 即,缓冲区的填充部分增加了 n 个元素,而其未填充部分 (以及该游标的容量) 缩小了 n 个元素。
Safety
调用者必须确保游标的前 n 字节已正确初始化。
ensure_init
初始化游标中的所有字节。
pub fn ensure_init(&mut self) -> &mut Selfset_init
断言游标的前 n 个未填充字节已初始化。
pub unsafe fn set_init(&mut self, n: usize) -> &mut SelfBorrowedBuf 假定字节永远不会被取消初始化,因此当调用该方法时使用的字节数少于已知要初始化的字节数时,该方法什么也不做。
Safety
调用者必须确保缓冲区的前 n 个字节已经被初始化。
append
将数据,追加,到游标,在其缓冲区中推进位置。
pub fn append(&mut self, buf: &[u8])Panics
如果 self.capacity() 小于 buf.len(),则发生 panic。
Trait Implementations
impl<'a> Debug for BorrowedCursor<'a>
fmt
使用给定的格式化程序格式化该值。
fn fmt(&self, f: &mut Formatter<'_>) -> Resultimpl<'a> Write for BorrowedCursor<'a>
write
在此 writer 中写入一个缓冲区,返回写入的字节数。
fn write(&mut self, buf: &[u8]) -> Result<usize>flush
刷新此输出流,确保所有中间缓冲的内容均到达其目的地。
fn flush(&mut self) -> Result<()>write_vectored
类似于 write,不同之处在于它是从缓冲区切片中写入数据的。
fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize>is_write_vectored
确定此 Writer 是否具有有效的 write_vectored 实现。
fn is_write_vectored(&self) -> boolwrite_all
尝试将整个缓冲区写入此 writer。
fn write_all(&mut self, buf: &[u8]) -> Result<()>write_all_vectored
尝试将多个缓冲区写入此 writer。
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>write_fmt
将格式化的字符串写入此 writer,返回遇到的任何错误。
fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<()>by_ref
为这个 Write 实例创建一个 “by reference” 适配器。
fn by_ref(&mut self) -> &mut Self
where
Self: Sized,Auto Trait Implementations
impl<'a> RefUnwindSafe for BorrowedCursor<'a>
impl<'a> Send for BorrowedCursor<'a>
impl<'a> Sync for BorrowedCursor<'a>
impl<'a> Unpin for BorrowedCursor<'a>
impl<'a> !UnwindSafe for BorrowedCursor<'a>
Blanket Implementations
impl<T> Any for T
impl<T> Any for T
where
T: 'static + ?Sized,impl<T> Borrow<T> for T
impl<T> Borrow<T> for T
where
T: ?Sized,impl<T> BorrowMut<T> for T
impl<T> BorrowMut<T> for T
where
T: ?Sized,impl<T> From<T> for T
impl<T, U> Into<U> for T
impl<T, U> Into<U> for T
where
U: From<T>,impl<T, U> TryFrom<U> for T
impl<T, U> TryFrom<U> for T
where
U: Into<T>,impl<T, U> TryInto<U> for T
impl<T, U> TryInto<U> for T
where
U: TryFrom<T>,