pub struct BorrowedBuf<'data> { /* private fields */ }
core_io_borrowed_buf
#117693)Expand description
A borrowed byte buffer which is incrementally filled and initialized.
This type is a sort of โdouble cursorโ. It tracks three regions in the buffer: a region at the beginning of the buffer that has been logically filled with data, a region that has been initialized at some point but not yet logically filled, and a region at the end that is fully uninitialized. The filled region is guaranteed to be a subset of the initialized region.
In summary, the contents of the buffer can be visualized as:
[ capacity ]
[ filled | unfilled ]
[ initialized | uninitialized ]
A BorrowedBuf
is created around some existing data (or capacity for data) via a unique reference
(&mut
). The BorrowedBuf
can be configured (e.g., using clear
or set_init
), but cannot be
directly written. To write into the buffer, use unfilled
to create a BorrowedCursor
. The cursor
has write-only access to the unfilled portion of the buffer (you can think of it as a
write-only iterator).
The lifetime 'data
is a bound on the lifetime of the underlying data.
Implementationsยง
Sourceยงimpl<'data> BorrowedBuf<'data>
impl<'data> BorrowedBuf<'data>
Sourcepub fn capacity(&self) -> usize
๐ฌThis is a nightly-only experimental API. (core_io_borrowed_buf
#117693)
pub fn capacity(&self) -> usize
core_io_borrowed_buf
#117693)Returns the total capacity of the buffer.
Sourcepub fn len(&self) -> usize
๐ฌThis is a nightly-only experimental API. (core_io_borrowed_buf
#117693)
pub fn len(&self) -> usize
core_io_borrowed_buf
#117693)Returns the length of the filled part of the buffer.
Sourcepub fn init_len(&self) -> usize
๐ฌThis is a nightly-only experimental API. (core_io_borrowed_buf
#117693)
pub fn init_len(&self) -> usize
core_io_borrowed_buf
#117693)Returns the length of the initialized part of the buffer.
Sourcepub fn filled(&self) -> &[u8] โ
๐ฌThis is a nightly-only experimental API. (core_io_borrowed_buf
#117693)
pub fn filled(&self) -> &[u8] โ
core_io_borrowed_buf
#117693)Returns a shared reference to the filled portion of the buffer.
Sourcepub fn filled_mut(&mut self) -> &mut [u8] โ
๐ฌThis is a nightly-only experimental API. (core_io_borrowed_buf
#117693)
pub fn filled_mut(&mut self) -> &mut [u8] โ
core_io_borrowed_buf
#117693)Returns a mutable reference to the filled portion of the buffer.
Sourcepub fn into_filled(self) -> &'data [u8] โ
๐ฌThis is a nightly-only experimental API. (core_io_borrowed_buf
#117693)
pub fn into_filled(self) -> &'data [u8] โ
core_io_borrowed_buf
#117693)Returns a shared reference to the filled portion of the buffer with its original lifetime.
Sourcepub fn into_filled_mut(self) -> &'data mut [u8] โ
๐ฌThis is a nightly-only experimental API. (core_io_borrowed_buf
#117693)
pub fn into_filled_mut(self) -> &'data mut [u8] โ
core_io_borrowed_buf
#117693)Returns a mutable reference to the filled portion of the buffer with its original lifetime.
Sourcepub fn unfilled<'this>(&'this mut self) -> BorrowedCursor<'this> โ
๐ฌThis is a nightly-only experimental API. (core_io_borrowed_buf
#117693)
pub fn unfilled<'this>(&'this mut self) -> BorrowedCursor<'this> โ
core_io_borrowed_buf
#117693)Returns a cursor over the unfilled part of the buffer.
Sourcepub fn clear(&mut self) -> &mut BorrowedBuf<'data>
๐ฌThis is a nightly-only experimental API. (core_io_borrowed_buf
#117693)
pub fn clear(&mut self) -> &mut BorrowedBuf<'data>
core_io_borrowed_buf
#117693)Clears the buffer, resetting the filled region to empty.
The number of initialized bytes is not changed, and the contents of the buffer are not modified.
Sourcepub unsafe fn set_init(&mut self, n: usize) -> &mut BorrowedBuf<'data>
๐ฌThis is a nightly-only experimental API. (core_io_borrowed_buf
#117693)
pub unsafe fn set_init(&mut self, n: usize) -> &mut BorrowedBuf<'data>
core_io_borrowed_buf
#117693)Asserts that the first n
bytes of the buffer are initialized.
BorrowedBuf
assumes that bytes are never de-initialized, so this method does nothing when called with fewer
bytes than are already known to be initialized.
ยงSafety
The caller must ensure that the first n
unfilled bytes of the buffer have already been initialized.
Trait Implementationsยง
Sourceยงimpl Debug for BorrowedBuf<'_>
impl Debug for BorrowedBuf<'_>
Sourceยงimpl<'data> From<&'data mut [MaybeUninit<u8>]> for BorrowedBuf<'data>
impl<'data> From<&'data mut [MaybeUninit<u8>]> for BorrowedBuf<'data>
Creates a new BorrowedBuf
from an uninitialized buffer.
Use set_init
if part of the buffer is known to be already initialized.
Sourceยงfn from(buf: &'data mut [MaybeUninit<u8>]) -> BorrowedBuf<'data>
fn from(buf: &'data mut [MaybeUninit<u8>]) -> BorrowedBuf<'data>
Sourceยงimpl<'data> From<&'data mut [u8]> for BorrowedBuf<'data>
impl<'data> From<&'data mut [u8]> for BorrowedBuf<'data>
Creates a new BorrowedBuf
from a fully initialized slice.