pub unsafe trait IoBuf: Unpin + 'static {
    // Required methods
    fn stable_ptr(&self) -> *const u8;
    fn bytes_init(&self) -> usize;
    fn bytes_total(&self) -> usize;
}
Expand description

An io-uring compatible buffer.

The IoBuf trait is implemented by buffer types that can be used with io-uring operations. Users will not need to use this trait directly. The BoundedBuf trait provides some useful methods including slice.

§Safety

Buffers passed to io-uring operations must reference a stable memory region. While the runtime holds ownership to a buffer, the pointer returned by stable_ptr must remain valid even if the IoBuf value is moved.

Required Methods§

source

fn stable_ptr(&self) -> *const u8

Returns a raw pointer to the vector’s buffer.

This method is to be used by the tokio-uring runtime and it is not expected for users to call it directly.

The implementation must ensure that, while the tokio-uring runtime owns the value, the pointer returned by stable_ptr does not change.

source

fn bytes_init(&self) -> usize

Number of initialized bytes.

This method is to be used by the tokio-uring runtime and it is not expected for users to call it directly.

For Vec, this is identical to len().

source

fn bytes_total(&self) -> usize

Total size of the buffer, including uninitialized memory, if any.

This method is to be used by the tokio-uring runtime and it is not expected for users to call it directly.

For Vec, this is identical to capacity().

Implementations on Foreign Types§

source§

impl IoBuf for &'static str

source§

impl IoBuf for &'static [u8]

source§

impl IoBuf for Vec<u8>

source§

impl IoBuf for Bytes

source§

impl IoBuf for BytesMut

Implementors§