Skip to content

Commit 16cc574

Browse files
Implement Buf::chunks_vectored for VecDeque<u8> (#708)
1 parent 0e9e4fc commit 16cc574

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/buf/vec_deque.rs

+18
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
use alloc::collections::VecDeque;
2+
#[cfg(feature = "std")]
3+
use std::io;
24

35
use super::Buf;
46

@@ -16,6 +18,22 @@ impl Buf for VecDeque<u8> {
1618
}
1719
}
1820

21+
#[cfg(feature = "std")]
22+
fn chunks_vectored<'a>(&'a self, dst: &mut [io::IoSlice<'a>]) -> usize {
23+
if self.is_empty() || dst.is_empty() {
24+
return 0;
25+
}
26+
27+
let (s1, s2) = self.as_slices();
28+
dst[0] = io::IoSlice::new(s1);
29+
if s2.is_empty() || dst.len() == 1 {
30+
return 1;
31+
}
32+
33+
dst[1] = io::IoSlice::new(s2);
34+
2
35+
}
36+
1937
fn advance(&mut self, cnt: usize) {
2038
self.drain(..cnt);
2139
}

tests/test_buf.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ mod vec_deque {
353353
deque
354354
}
355355

356-
buf_tests!(make_input, /* `VecDeque` does not do `chucks_vectored */ false);
356+
buf_tests!(make_input, true);
357357
}
358358

359359
#[cfg(feature = "std")]

0 commit comments

Comments
 (0)