pub struct ReadBuffer { pub bytes: Vec, pub pointer: usize, } impl ReadBuffer { pub fn new() -> Self { Self { bytes: Vec::new(), pointer: 0, } } pub fn from_str(text: &str) -> Self { Self { bytes: text.bytes().collect(), pointer: 0, } } pub fn set_str(&mut self, text: &str) { self.bytes = text.bytes().collect(); self.pointer = 0; } pub fn read(&mut self) -> u8 { let pointer = self.pointer; self.pointer += 1; match self.bytes.get(pointer) { Some(byte) => *byte, None => 0, } } }