Implement Buf::chunks_vectored for VecDeque<u8> (#708)

This commit is contained in:
Paolo Barbolini
2025-01-10 14:40:12 +01:00
committed by GitHub
parent 0e9e4fc2f1
commit 16cc574fea
2 changed files with 19 additions and 1 deletions
+18
View File
@@ -1,4 +1,6 @@
use alloc::collections::VecDeque;
#[cfg(feature = "std")]
use std::io;
use super::Buf;
@@ -16,6 +18,22 @@ impl Buf for VecDeque<u8> {
}
}
#[cfg(feature = "std")]
fn chunks_vectored<'a>(&'a self, dst: &mut [io::IoSlice<'a>]) -> usize {
if self.is_empty() || dst.is_empty() {
return 0;
}
let (s1, s2) = self.as_slices();
dst[0] = io::IoSlice::new(s1);
if s2.is_empty() || dst.len() == 1 {
return 1;
}
dst[1] = io::IoSlice::new(s2);
2
}
fn advance(&mut self, cnt: usize) {
self.drain(..cnt);
}
+1 -1
View File
@@ -353,7 +353,7 @@ mod vec_deque {
deque
}
buf_tests!(make_input, /* `VecDeque` does not do `chucks_vectored */ false);
buf_tests!(make_input, true);
}
#[cfg(feature = "std")]