Nothing to see here, move along
1#[derive(Debug, Clone)]
2pub struct LineBuf<const N: usize> {
3 data: [u8; N],
4 len: usize,
5}
6
7impl<const N: usize> LineBuf<N> {
8 pub const fn new() -> Self {
9 Self {
10 data: [0u8; N],
11 len: 0,
12 }
13 }
14
15 pub fn push(&mut self, b: u8) -> bool {
16 if self.len < N {
17 self.data[self.len] = b;
18 self.len += 1;
19 true
20 } else {
21 false
22 }
23 }
24
25 pub fn pop(&mut self) -> bool {
26 if self.len > 0 {
27 self.len -= 1;
28 true
29 } else {
30 false
31 }
32 }
33
34 pub fn clear(&mut self) {
35 self.len = 0;
36 }
37
38 pub fn len(&self) -> usize {
39 self.len
40 }
41
42 pub fn is_empty(&self) -> bool {
43 self.len == 0
44 }
45
46 pub fn as_bytes(&self) -> &[u8] {
47 &self.data[..self.len]
48 }
49}