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 anIoSliceheader and anIoSlicetrailer (seeVectoredSlice::frame). - A vectored slice, i.e. a slice of
IoSlice. - A buffer of
IoSliceof sizeN - A buffer of
IoSlice