bytesbuf/bytes_compat/
view.rs1use std::io::IoSlice;
5
6use bytes::Buf;
7
8use crate::BytesView;
9
10impl Buf for BytesView {
11 #[cfg_attr(test, mutants::skip)] fn remaining(&self) -> usize {
13 self.len()
14 }
15
16 #[cfg_attr(test, mutants::skip)] fn chunk(&self) -> &[u8] {
18 self.first_slice()
19 }
20
21 #[cfg_attr(test, mutants::skip)] fn chunks_vectored<'a>(&'a self, dst: &mut [IoSlice<'a>]) -> usize {
23 self.io_slices(dst)
24 }
25
26 #[cfg_attr(test, mutants::skip)] fn advance(&mut self, cnt: usize) {
28 self.advance(cnt);
29 }
30}
31
32#[cfg_attr(coverage_nightly, coverage(off))]
33#[cfg(test)]
34mod tests {
35 use new_zealand::nz;
36
37 use super::*;
38 use crate::mem::testing::FixedBlockMemory;
39
40 #[test]
41 fn buf_compat() {
42 let memory = FixedBlockMemory::new(nz!(25));
43
44 let mut buf = memory.reserve(100);
46 buf.put_byte_repeated(0x44, 100);
47
48 let mut bytes = buf.consume_all();
49
50 assert_eq!(Buf::remaining(&bytes), 100);
51
52 let chunk = Buf::chunk(&bytes);
53 assert_eq!(chunk.len(), 25);
54 assert_eq!(chunk, &[0x44; 25]);
55
56 Buf::advance(&mut bytes, 20);
57
58 let chunk = Buf::chunk(&bytes);
59 assert_eq!(chunk.len(), 5);
60 assert_eq!(chunk, &[0x44; 5]);
61
62 Buf::advance(&mut bytes, 5);
63
64 let chunk = Buf::chunk(&bytes);
65 assert_eq!(chunk.len(), 25);
66 assert_eq!(chunk, &[0x44; 25]);
67
68 Buf::advance(&mut bytes, 5);
69
70 let mut io_slices = [IoSlice::new(&[]); 4];
71 let n = Buf::chunks_vectored(&bytes, &mut io_slices);
72
73 assert_eq!(n, 3);
76
77 assert_eq!(&*io_slices[0], &[0x44; 20]);
78 assert_eq!(&*io_slices[1], &[0x44; 25]);
79 assert_eq!(&*io_slices[2], &[0x44; 25]);
80 }
81}