use std::ops::Index; pub enum BufferError { EndOfBuffer } pub struct Buffer { bytes: Vec, index: usize } impl Buffer { pub fn new(bytes: Vec, index: usize) -> Self { Buffer { bytes, index } } pub fn read(&self, size: usize) -> Result, BufferError> { if self.index + size >= self.bytes.len() {return Err(BufferError::EndOfBuffer);} // self.index += size; Ok(self.bytes[self.index..self.index+size-1].to_vec()) } pub fn read2(&mut self, size: usize) -> Result, BufferError> { if self.index + size >= self.bytes.len() {return Err(BufferError::EndOfBuffer);} self.index += size; Ok(self.bytes[self.index..self.index+size-1].to_vec()) } }