compio_buf

Struct IoSliceMut

Source
pub struct IoSliceMut(/* private fields */);
Expand description

An unsafe, 'static, maybe uninitialized, and mutable slice of bytes to interact with system API.

Like IoSliceMut in std, IoSliceMut guarantees the ABI compatibility on unix and windows, but without the lifetime and accepts MaybeUninit<u8>, makes it easier to use with compio driver at the cost of unsafe to construct. IoSliceMut should only be used with compio driver.

Implementations§

Source§

impl IoSliceMut

Source

pub unsafe fn new(ptr: *mut MaybeUninit<u8>, len: usize) -> Self

Create a new IoSliceMut from a raw pointer and a length.

§Safety

The caller must ensure that:

  • the pointer is valid for the lifetime of the IoSliceMut
  • the length is correct (the content can be uninitialized, but must be accessible)
  • the pointer is not used for anything else while the IoSliceMut is in use
Source

pub unsafe fn from_slice(slice: &mut [u8]) -> Self

Create a new IoSliceMut from an initialized slice.

§Safety

The caller must ensure that, during the lifetime of the IoSliceMut, the slice is valid the and is not used for anything else.

Source

pub unsafe fn from_uninit(slice: &mut [MaybeUninit<u8>]) -> Self

Create a new IoSliceMut from a uninitialized slice.

§Safety

The caller must ensure that, during the lifetime of the IoSliceMut, the slice is valid the and is not used for anything else.

Source

pub fn as_ptr(&self) -> *mut MaybeUninit<u8>

Get the pointer to the buffer.

Source

pub fn len(&self) -> usize

Get the length of the buffer.

Source

pub fn is_empty(&self) -> bool

Check if the buffer is empty.

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.