1pub trait Buffer {
7 fn append(&mut self, chunk: &[u8]);
9 fn view(&self) -> &[u8];
11 fn advance(&mut self, bytes: usize);
13}
14
15impl super::Buffer for Vec<u8> {
16 fn append(&mut self, chunk: &[u8]) {
17 self.extend_from_slice(chunk)
18 }
19
20 fn view(&self) -> &[u8] {
21 self
22 }
23
24 fn advance(&mut self, bytes: usize) {
25 self.drain(..bytes);
26 }
27}
28
29#[cfg(feature = "bytes")]
30impl super::Buffer for bytes::BytesMut {
31 fn append(&mut self, chunk: &[u8]) {
32 bytes::BufMut::put_slice(self, chunk)
33 }
34
35 fn view(&self) -> &[u8] {
36 bytes::Buf::chunk(self)
37 }
38
39 fn advance(&mut self, bytes: usize) {
40 bytes::Buf::advance(self, bytes)
41 }
42}