#[derive(Debug, Clone, Copy, PartialEq)]
pub struct ConstReadBuffer<'a> {
location: usize,
memory: &'a [u8],
}
impl<'a> ConstReadBuffer<'a> {
pub const fn new(memory: &'a [u8]) -> Self {
Self {
location: 0,
memory,
}
}
pub const fn get(mut self) -> Option<(Self, u8)> {
if self.location >= self.memory.len() {
return None;
}
let value = self.memory[self.location];
self.location += 1;
Some((self, value))
}
pub const fn as_ref(&self) -> &[u8] {
self.memory
}
pub const fn remaining(&self) -> &[u8] {
self.memory.split_at(self.location).1
}
}