2019-09-05 14:00:23 -07:00
|
|
|
use alloc::collections::VecDeque;
|
2025-01-10 14:40:12 +01:00
|
|
|
#[cfg(feature = "std")]
|
|
|
|
|
use std::io;
|
2019-03-06 20:46:42 +01:00
|
|
|
|
|
|
|
|
use super::Buf;
|
|
|
|
|
|
|
|
|
|
impl Buf for VecDeque<u8> {
|
|
|
|
|
fn remaining(&self) -> usize {
|
|
|
|
|
self.len()
|
|
|
|
|
}
|
|
|
|
|
|
2020-12-18 11:04:31 -08:00
|
|
|
fn chunk(&self) -> &[u8] {
|
2019-03-06 20:46:42 +01:00
|
|
|
let (s1, s2) = self.as_slices();
|
|
|
|
|
if s1.is_empty() {
|
|
|
|
|
s2
|
|
|
|
|
} else {
|
|
|
|
|
s1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-10 14:40:12 +01:00
|
|
|
#[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
|
|
|
|
|
}
|
|
|
|
|
|
2019-03-06 20:46:42 +01:00
|
|
|
fn advance(&mut self, cnt: usize) {
|
|
|
|
|
self.drain(..cnt);
|
|
|
|
|
}
|
|
|
|
|
}
|