pub struct BorrowedBuf<'data> { /* private fields */ }core_io_borrowed_buf)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)
pub fn capacity(&self) -> usize
core_io_borrowed_buf)Returns the total capacity of the buffer.
Sourcepub fn len(&self) -> usize
๐ฌThis is a nightly-only experimental API. (core_io_borrowed_buf)
pub fn len(&self) -> usize
core_io_borrowed_buf)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)
pub fn init_len(&self) -> usize
core_io_borrowed_buf)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)
pub fn filled(&self) -> &[u8] โ
core_io_borrowed_buf)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)
pub fn filled_mut(&mut self) -> &mut [u8] โ
core_io_borrowed_buf)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)
pub fn into_filled(self) -> &'data [u8] โ
core_io_borrowed_buf)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)
pub fn into_filled_mut(self) -> &'data mut [u8] โ
core_io_borrowed_buf)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)
pub fn unfilled<'this>(&'this mut self) -> BorrowedCursor<'this> โ
core_io_borrowed_buf)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)
pub fn clear(&mut self) -> &mut BorrowedBuf<'data>
core_io_borrowed_buf)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)
pub unsafe fn set_init(&mut self, n: usize) -> &mut BorrowedBuf<'data>
core_io_borrowed_buf)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>
Creates a new BorrowedBuf from an uninitialized buffer.
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>
Creates a new BorrowedBuf from a fully initialized slice.
impl<'data> From<&'data mut [u8]> for BorrowedBuf<'data>
Creates a new BorrowedBuf from a fully initialized slice.
Sourceยงfn from(slice: &'data mut [u8]) -> BorrowedBuf<'data>
fn from(slice: &'data mut [u8]) -> BorrowedBuf<'data>
Sourceยงimpl<'data> From<BorrowedCursor<'data>> for BorrowedBuf<'data>
Creates a new BorrowedBuf from a cursor.
impl<'data> From<BorrowedCursor<'data>> for BorrowedBuf<'data>
Creates a new BorrowedBuf from a cursor.
Use BorrowedCursor::with_unfilled_buf instead for a safer alternative.
Sourceยงfn from(buf: BorrowedCursor<'data>) -> BorrowedBuf<'data>
fn from(buf: BorrowedCursor<'data>) -> BorrowedBuf<'data>
Auto Trait Implementationsยง
impl<'data> Freeze for BorrowedBuf<'data>
impl<'data> RefUnwindSafe for BorrowedBuf<'data>
impl<'data> Send for BorrowedBuf<'data>
impl<'data> Sync for BorrowedBuf<'data>
impl<'data> Unpin for BorrowedBuf<'data>
impl<'data> !UnwindSafe for BorrowedBuf<'data>
Blanket Implementationsยง
ยงimpl<T> AnySync for T
impl<T> AnySync for T
ยงimpl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
ยงimpl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Sourceยงimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Sourceยงfn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
ยงimpl<T> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
ยงfn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Any.ยงfn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Any.ยงimpl<T> Instrument for T
impl<T> Instrument for T
ยงfn instrument(self, span: Span) -> Instrumented<Self> โ
fn instrument(self, span: Span) -> Instrumented<Self> โ
Sourceยงimpl<T> IntoEither for T
impl<T> IntoEither for T
Sourceยงfn into_either(self, into_left: bool) -> Either<Self, Self> โ
fn into_either(self, into_left: bool) -> Either<Self, Self> โ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSourceยงfn into_either_with<F>(self, into_left: F) -> Either<Self, Self> โ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> โ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSourceยงimpl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Sourceยงfn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request