Struct std::io::BorrowedCursor

source ·
pub struct BorrowedCursor<'a> { /* private fields */ }
🔬This is a nightly-only experimental API. (read_buf #78485)
Expand description

BorrowedBuf 未填充部分的可写视图。

提供对底层 BorrowedBuf 的已初始化和未初始化部分的访问。 可以使用 append 将数据直接写入游标,也可以通过获取部分或全部游标的切片并写入切片来间接写入数据。

在间接情况下,调用者必须在写入后调用 advance 来通知游标已经写入了多少字节。

一旦数据被写入游标,它就成为底层 BorrowedBuf 的填充部分的一部分,并且不能再被游标访问或重写。 即,游标跟踪底层 BorrowedBuf 的未填充部分。

生命周期 'a 是底层缓冲区的生命周期的界限 (这意味着它是该缓冲区中数据的传递界限)。

Implementations§

source§

impl<'a> BorrowedCursor<'a>

source

pub fn reborrow<'this>(&'this mut self) -> BorrowedCursor<'this>

🔬This is a nightly-only experimental API. (read_buf #78485)

通过使用较小的生命周期克隆它来重新借用此游标。

由于游标保持对其底层缓冲区的唯一访问,因此当新游标存在时,借用的游标不可访问。

source

pub fn capacity(&self) -> usize

🔬This is a nightly-only experimental API. (read_buf #78485)

返回游标中的可用空间。

source

pub fn written(&self) -> usize

🔬This is a nightly-only experimental API. (read_buf #78485)

返回自从 BorrowedBuf 创建以来写入此游标的字节数。

请注意,如果此游标是另一个游标的重新借用克隆,则返回的计数是通过任一游标写入的计数,而不是自游标重新借用以来的计数。

source

pub fn init_ref(&self) -> &[u8]

🔬This is a nightly-only experimental API. (read_buf #78485)

将共享引用返回到游标的初始化部分。

source

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

🔬This is a nightly-only experimental API. (read_buf #78485)

返回游标的初始化部分的,可变引用。

source

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

🔬This is a nightly-only experimental API. (read_buf #78485)

将一个,可变引用,返回到游标的未初始化部分。

取消初始化这些字节中的任何一个都是安全的。

source

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

🔬This is a nightly-only experimental API. (read_buf #78485)

返回对整个游标的引用。

Safety

调用者不得取消初始化游标初始化部分中的任何字节。

source

pub unsafe fn advance(&mut self, n: usize) -> &mut Self

🔬This is a nightly-only experimental API. (read_buf #78485)

通过断言 n 字节已被填充来前进游标。

推进后,n 字节不再可以通过游标访问,只能通过底层缓冲区访问。 即,缓冲区的填充部分增加了 n 个元素,而其未填充部分 (以及该游标的容量) 缩小了 n 个元素。

Safety

调用者必须确保游标的前 n 字节已正确初始化。

source

pub fn ensure_init(&mut self) -> &mut Self

🔬This is a nightly-only experimental API. (read_buf #78485)

初始化游标中的所有字节。

source

pub unsafe fn set_init(&mut self, n: usize) -> &mut Self

🔬This is a nightly-only experimental API. (read_buf #78485)

断言游标的前 n 个未填充字节已初始化。

BorrowedBuf 假定字节永远不会被取消初始化,因此当调用该方法时使用的字节数少于已知要初始化的字节数时,该方法什么也不做。

Safety

调用者必须确保缓冲区的前 n 个字节已经被初始化。

source

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

🔬This is a nightly-only experimental API. (read_buf #78485)

将数据,追加,到游标,在其缓冲区中推进位置。

Panics

如果 self.capacity() 小于 buf.len(),则发生 panic。

Trait Implementations§

source§

impl<'a> Debug for BorrowedCursor<'a>

source§

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

使用给定的格式化程序格式化该值。 Read more
source§

impl<'a> Write for BorrowedCursor<'a>

source§

fn write(&mut self, buf: &[u8]) -> Result<usize>

在此 writer 中写入一个缓冲区,返回写入的字节数。 Read more
source§

fn flush(&mut self) -> Result<()>

刷新此输出流,确保所有中间缓冲的内容均到达其目的地。 Read more
1.36.0 · source§

fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize>

类似于 write,不同之处在于它是从缓冲区切片中写入数据的。 Read more
source§

fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector #69941)
确定此 Writer 是否具有有效的 write_vectored 实现。 Read more
1.0.0 · source§

fn write_all(&mut self, buf: &[u8]) -> Result<()>

尝试将整个缓冲区写入此 writer。 Read more
source§

fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>

🔬This is a nightly-only experimental API. (write_all_vectored #70436)
尝试将多个缓冲区写入此 writer。 Read more
1.0.0 · source§

fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<()>

将格式化的字符串写入此 writer,返回遇到的任何错误。 Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere Self: Sized,

为这个 Write 实例创建一个 “by reference” 适配器。 Read more

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§

source§

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

source§

fn type_id(&self) -> TypeId

获取 selfTypeIdRead more
source§

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

source§

fn borrow(&self) -> &T

从拥有的值中一成不变地借用。 Read more
source§

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

source§

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

从拥有的值中借用。 Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

返回未更改的参数。

source§

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

source§

fn into(self) -> U

调用 U::from(self)

也就是说,这种转换是 From<T> for U 实现选择执行的任何操作。

source§

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

§

type Error = Infallible

发生转换错误时返回的类型。
source§

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

执行转换。
source§

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

§

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

发生转换错误时返回的类型。
source§

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

执行转换。