1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use std::error; use std::fmt; #[derive(Debug, Clone)] pub enum ParserError { InvalidOpcode(u8), NotEnoughBytes(usize), } impl fmt::Display for ParserError { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { Self::InvalidOpcode(op) => write!(f, "invalid opcode: {:#X}", op), Self::NotEnoughBytes(len) => write!(f, "not enough bytes to be parsed ({} bytes)", len), } } } impl error::Error for ParserError { fn source(&self) -> Option<&(dyn error::Error + 'static)> { match *self { Self::InvalidOpcode(_) => None, Self::NotEnoughBytes(_) => None, } } }