Module swap_buffer_queue::write_vectored
source · Available on crate features
write
and std
only.Expand description
Buffer
implementations to be used with Write::write_vectored
.
WriteVectoredArrayBuffer
and WriteVectoredVecBuffer
allows buffering a slice of
IoSlice
, saving the cost of dequeuing io-slices one by one to collect them after.
(Internally, two buffers are used: one of the values, and one for the io-slices)
Examples
// Creates a WriteVectoredVecBuffer queue
let queue: Queue<WriteVectoredVecBuffer<Vec<u8>>> = Queue::with_capacity(100);
queue.try_enqueue([vec![0; 256]]).unwrap();
queue.try_enqueue([vec![42; 42]]).unwrap();
let mut total_size = 0u16.to_be_bytes();
let mut slice = queue.try_dequeue().unwrap();
// Adds a header with the total size of the slices
total_size.copy_from_slice(&(slice.total_size() as u16).to_be_bytes());
let mut frame = slice.frame(.., Some(&total_size), None);
// Let's pretend we have a writer
let mut writer: Vec<u8> = Default::default();
assert_eq!(writer.write_vectored(&mut frame).unwrap(), 300);
Structs
- A framed part of a
VectoredSlice
, with anIoSlice
header and anIoSlice
trailer (seeVectoredSlice::frame
). - A vectored slice, i.e. a slice of
IoSlice
. - A buffer of
IoSlice
of sizeN
- A buffer of
IoSlice