in netbench/src/multiplex/buffer.rs [103:129]
fn copy_to_bytes(&mut self, len: usize) -> Bytes {
while let Some(mut front) = self.head.pop_front() {
if front.is_empty() {
continue;
}
self.len -= len;
if front.len() == len {
self.check_consistency();
return front.freeze();
}
let out = front.split_to(len);
self.head.push_front(front);
self.check_consistency();
return out.freeze();
}
let out = self.tail.split_to(len).freeze();
self.len -= len;
self.check_consistency();
out
}