Trait kvarn_tokio_uring::buf::IoBuf
source · 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§
sourcefn stable_ptr(&self) -> *const u8
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.
sourcefn bytes_init(&self) -> usize
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()
.
sourcefn bytes_total(&self) -> usize
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()
.