#[derive(Debug, Clone)] pub struct LineBuf { data: [u8; N], len: usize, } impl LineBuf { pub const fn new() -> Self { Self { data: [0u8; N], len: 0, } } pub fn push(&mut self, b: u8) -> bool { if self.len < N { self.data[self.len] = b; self.len += 1; true } else { false } } pub fn pop(&mut self) -> bool { if self.len > 0 { self.len -= 1; true } else { false } } pub fn clear(&mut self) { self.len = 0; } pub fn len(&self) -> usize { self.len } pub fn is_empty(&self) -> bool { self.len == 0 } pub fn as_bytes(&self) -> &[u8] { &self.data[..self.len] } }