Struct OwnedCursor

Source
pub struct OwnedCursor { /* private fields */ }
Expand description

A write-only cursor over an OwnedBuf.

Created via OwnedBuf::unfilled or using Into.

An OwnedCursor represents the unfilled portion of an OwnedBuf, as data is filled it becomes inaccessible via the cursor, so the start of the cursor (or current position, if you think of it that way) is always the first unfilled byte of the underlying buffer. An OwnedCursor can contain both initialized and uninitialized bytes.

An OwnedCursor takes ownership of the OwnedBuf when it is created. It can always be converted back into and OwnedBuf.

Implementations§

Source§

impl OwnedCursor

Source

pub fn into_buf(self) -> OwnedBuf

Convert this cursor back into its underlying buffer.

Source

pub fn capacity(&self) -> usize

Returns the available space in the cursor.

Source

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

Returns a mutable reference to the initialized portion of the cursor.

Source

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

Returns a mutable reference to the uninitialized part of the cursor.

It is safe to uninitialize any of these bytes.

Source

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

Returns a mutable reference to the whole cursor.

§Safety

The caller must not uninitialize any bytes in the initialized portion of the cursor.

Source

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

Advance the cursor by asserting that n bytes have been filled.

After advancing, the n bytes are no longer accessible via the cursor and can only be accessed via the underlying buffer. I.e., the buffer’s filled portion grows by n elements and its unfilled portion (and the capacity of this cursor) shrinks by n elements.

§Safety

The caller must ensure that the first n bytes of the cursor have been properly initialised.

Source

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

Initializes all bytes in the cursor.

Source

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

Asserts that the first n unfilled bytes of the cursor are initialized.

OwnedBuf 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 bytes of the cursor have already been initialized.

Source

pub fn write_slice(&mut self, data: &[u8])

Copies data to the start of the cursor and advances the cursor.

§Panics

Panics if self.capacity() is less than data.len().

Trait Implementations§

Source§

impl Into<OwnedCursor> for OwnedBuf

Source§

fn into(self) -> OwnedCursor

Converts this type into the (usually inferred) input type.
Source§

impl Write for OwnedCursor

Source§

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

Writes a buffer into this writer, returning how many bytes were written. Read more
Source§

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

Flushes this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
1.36.0 · Source§

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

Like write, except that it writes from a slice of buffers. Read more
Source§

fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Writer has an efficient write_vectored implementation. Read more
1.0.0 · Source§

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

Attempts to write an entire buffer into this writer. Read more
Source§

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

🔬This is a nightly-only experimental API. (write_all_vectored)
Attempts to write multiple buffers into this writer. Read more
1.0.0 · Source§

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

Writes a formatted string into this writer, returning any error encountered. Read more
1.0.0 · Source§

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

Creates a “by reference” adapter for this instance of Write. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

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

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.