Nothing to see here, move along
at main 49 lines 866 B view raw
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}