pub enum OpCode { CONSTANT, ADD, SUB, MUL, DIV, MOD, EQ, NE, GR, GE, LS, LE, OR, AND, PRINT, ERR, } impl From for u8 { fn from(value: OpCode) -> Self { use OpCode::*; match value { CONSTANT => 0x00, ADD => 0x01, SUB => 0x02, MUL => 0x03, DIV => 0x04, MOD => 0x05, EQ => 0x06, NE => 0x07, GR => 0x08, GE => 0x09, LS => 0x0A, LE => 0x0B, OR => 0x0C, AND => 0x0D, PRINT => 0xFE, ERR => 0xFF } } } impl From for OpCode { fn from(value: u8) -> Self { use OpCode::*; match value { 0x00 => CONSTANT, 0x01 => ADD, 0x02 => SUB, 0x03 => MUL, 0x04 => DIV, 0x05 => MOD, 0x06 => EQ, 0x07 => NE, 0x08 => GR, 0x09 => GE, 0x0A => LS, 0x0B => LE, 0x0C => OR, 0x0D => AND, 0xFE => PRINT, _ => ERR } } }