embedded_cli/
buffer.rs

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        // noop, can't grow
9    }
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}