Trait compio_buf::IoVectoredBufMut

source ·
pub trait IoVectoredBufMut: IoVectoredBuf + SetBufInit {
    // Required methods
    fn as_dyn_mut_bufs(&mut self) -> impl Iterator<Item = &mut dyn IoBufMut>;
    fn owned_iter_mut(
        self,
    ) -> Result<OwnedIter<impl OwnedIteratorMut<Inner = Self>>, Self>;

    // Provided method
    unsafe fn as_io_slices_mut(&mut self) -> Vec<IoSliceMut> { ... }
}
Expand description

A trait for mutable vectored buffers.

Required Methods§

source

fn as_dyn_mut_bufs(&mut self) -> impl Iterator<Item = &mut dyn IoBufMut>

Iterate the inner buffers.

source

fn owned_iter_mut( self, ) -> Result<OwnedIter<impl OwnedIteratorMut<Inner = Self>>, Self>

Create an owned iterator to make it easy to pass this vectored buffer as a regular buffer.

use compio_buf::{IoBuf, IoVectoredBufMut};

let bufs = [vec![1u8, 2], vec![3, 4]];
let iter = bufs.owned_iter_mut().unwrap();
assert_eq!(iter.as_slice(), &[1, 2]);
let iter = iter.next().unwrap();
assert_eq!(iter.as_slice(), &[3, 4]);
let iter = iter.next();
assert!(iter.is_err());

The time complexity of the returned iterator depends on the implementation of Iterator::nth of IoVectoredBuf::as_dyn_bufs.

Provided Methods§

source

unsafe fn as_io_slices_mut(&mut self) -> Vec<IoSliceMut>

An iterator for the IoSliceMuts of the buffers.

§Safety

The return slice will not live longer than self. It is static to provide convenience from writing self-referenced structure.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

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

source§

fn as_dyn_mut_bufs(&mut self) -> impl Iterator<Item = &mut dyn IoBufMut>

source§

fn owned_iter_mut( self, ) -> Result<OwnedIter<impl OwnedIteratorMut<Inner = Self>>, Self>

source§

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

source§

fn as_dyn_mut_bufs(&mut self) -> impl Iterator<Item = &mut dyn IoBufMut>

source§

fn owned_iter_mut( self, ) -> Result<OwnedIter<impl OwnedIteratorMut<Inner = Self>>, Self>

source§

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

source§

fn as_dyn_mut_bufs(&mut self) -> impl Iterator<Item = &mut dyn IoBufMut>

source§

fn owned_iter_mut( self, ) -> Result<OwnedIter<impl OwnedIteratorMut<Inner = Self>>, Self>

source§

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

Available on crate feature arrayvec only.
source§

fn as_dyn_mut_bufs(&mut self) -> impl Iterator<Item = &mut dyn IoBufMut>

source§

fn owned_iter_mut( self, ) -> Result<OwnedIter<impl OwnedIteratorMut<Inner = Self>>, Self>

source§

impl<T: IoVectoredBufMut + IoIndexedBufMut> IoVectoredBufMut for &'static mut T

source§

fn as_dyn_mut_bufs(&mut self) -> impl Iterator<Item = &mut dyn IoBufMut>

source§

fn owned_iter_mut( self, ) -> Result<OwnedIter<impl OwnedIteratorMut<Inner = Self>>, Self>

Implementors§