1pub trait Buffer {
2 fn as_slice(&self) -> &[u8];
3
4 fn as_slice_mut(&mut self) -> &mut [u8];
5
6 #[allow(unused_variables)]
7 fn grow(&mut self, new_size: usize) {
8 }
10
11 fn is_empty(&self) -> bool {
12 self.as_slice().is_empty()
13 }
14
15 fn len(&self) -> usize {
16 self.as_slice().len()
17 }
18}
19
20impl<const SIZE: usize> Buffer for [u8; SIZE] {
21 fn as_slice(&self) -> &[u8] {
22 self
23 }
24
25 fn as_slice_mut(&mut self) -> &mut [u8] {
26 self
27 }
28}
29
30impl<'a> Buffer for &'a mut [u8] {
31 fn as_slice(&self) -> &[u8] {
32 self
33 }
34
35 fn as_slice_mut(&mut self) -> &mut [u8] {
36 self
37 }
38}