mirror of
https://github.com/tokio-rs/bytes.git
synced 2026-08-07 00:00:13 +02:00
Implement Buf::chunks_vectored for VecDeque<u8> (#708)
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
use alloc::collections::VecDeque;
|
use alloc::collections::VecDeque;
|
||||||
|
#[cfg(feature = "std")]
|
||||||
|
use std::io;
|
||||||
|
|
||||||
use super::Buf;
|
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) {
|
fn advance(&mut self, cnt: usize) {
|
||||||
self.drain(..cnt);
|
self.drain(..cnt);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -353,7 +353,7 @@ mod vec_deque {
|
|||||||
deque
|
deque
|
||||||
}
|
}
|
||||||
|
|
||||||
buf_tests!(make_input, /* `VecDeque` does not do `chucks_vectored */ false);
|
buf_tests!(make_input, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
|
|||||||
Reference in New Issue
Block a user