Trait IoVectoredBufMut
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§
fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>
fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>
An iterator of maybe uninitialized slice of the buffers.
Provided Methods§
fn total_capacity(&mut self) -> usize
fn total_capacity(&mut self) -> usize
The total capacity of all buffers.
fn slice_mut(self, begin: usize) -> VectoredSlice<Self>where
Self: Sized,
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§
§impl IoVectoredBufMut for ()
impl IoVectoredBufMut for ()
fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>
§impl<T> IoVectoredBufMut for &'static mut [T]where
T: IoBufMut,
impl<T> IoVectoredBufMut for &'static mut [T]where
T: IoBufMut,
fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>
§impl<T> IoVectoredBufMut for (T,)where
T: IoBufMut,
impl<T> IoVectoredBufMut for (T,)where
T: IoBufMut,
fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>
§impl<T, Rest> IoVectoredBufMut for (T, Rest)where
T: IoBufMut,
Rest: IoVectoredBufMut,
impl<T, Rest> IoVectoredBufMut for (T, Rest)where
T: IoBufMut,
Rest: IoVectoredBufMut,
fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>
§impl<T, const N: usize> IoVectoredBufMut for [T; N]where
T: IoBufMut,
impl<T, const N: usize> IoVectoredBufMut for [T; N]where
T: IoBufMut,
fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>
§impl<T, const N: usize> IoVectoredBufMut for SmallVec<[T; N]>
Available on crate feature smallvec only.
impl<T, const N: usize> IoVectoredBufMut for SmallVec<[T; N]>
Available on crate feature
smallvec only.fn iter_uninit_slice(&mut self) -> impl Iterator<Item = &mut [MaybeUninit<u8>]>
Implementors§
impl<T> IoVectoredBufMut for VectoredSlice<T>where
T: IoVectoredBufMut,
impl<T, A> IoVectoredBufMut for Vec<T, A>
impl<T, const N: usize> IoVectoredBufMut for ArrayVec<T, N>where
T: IoBufMut,
Available on crate feature
arrayvec only.