Skip to main content

IoVectoredBufMut

Trait IoVectoredBufMut 

Source
pub trait IoVectoredBufMut: IoVectoredBuf + SetLen {
    // Required method
    fn iter_uninit_slice(
        &mut self,
    ) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>;

    // Provided methods
    fn total_capacity(&mut self) -> usize { ... }
    fn slice_mut(self, begin: usize) -> VectoredSlice<Self>
       where Self: Sized { ... }
}
Expand description

A trait for mutable vectored buffers.

Required Methods§

Source

fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>

An iterator of maybe uninitialized slice of the buffers.

Provided Methods§

Source

fn total_capacity(&mut self) -> usize

The total capacity of all buffers.

Source

fn slice_mut(self, begin: usize) -> VectoredSlice<Self>
where Self: Sized,

Get an owned view of the vectored buffer.

Unlike IoVectoredBuf::slice, the iterator returned by this function will skip both initialized and uninitialized bytes.

§Examples
use compio_buf::{IoBuf, IoVectoredBuf, IoVectoredBufMut, VectoredSlice};

/// Create a buffer with given content and capacity.
fn new_buf(slice: &[u8], cap: usize) -> Vec<u8> {
    let mut buf = Vec::new();
    buf.reserve_exact(cap);
    buf.extend_from_slice(slice);
    buf
}

let bufs = [new_buf(b"hello", 10), new_buf(b"world", 10)];
let vectored_buf = bufs.slice_mut(13);
let mut iter = vectored_buf.iter_slice();
let buf1 = iter.next().unwrap();
assert!(iter.next().is_none());
assert_eq!(buf1.as_init(), b"ld");

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl IoVectoredBufMut for ()

Source§

fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>

Source§

impl<T: IoBufMut> IoVectoredBufMut for &'static mut [T]

Source§

fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>

Source§

impl<T: IoBufMut> IoVectoredBufMut for (T,)

Source§

fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>

Source§

impl<T: IoBufMut, A: Allocator + 'static> IoVectoredBufMut for Vec<T, A>

Source§

fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>

Source§

impl<T: IoBufMut, Rest: IoVectoredBufMut> IoVectoredBufMut for (T, Rest)

Source§

fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>

Source§

impl<T: IoBufMut, const N: usize> IoVectoredBufMut for [T; N]

Source§

fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>

Source§

impl<T: IoBufMut, const N: usize> IoVectoredBufMut for ArrayVec<T, N>

Available on crate feature arrayvec only.
Source§

fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>

Source§

impl<T: IoBufMut, const N: usize> IoVectoredBufMut for SmallVec<[T; N]>
where [T; N]: Array<Item = T>,

Available on crate feature smallvec only.
Source§

fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>

Implementors§