use crate::Value; pub(crate) trait Pc { fn jmp(&mut self, val: V); fn advance_by>(&mut self, by: T); } impl Pc for u16 { fn jmp(&mut self, val: V) { val.jmp(self) } fn advance_by>(&mut self, by: T) { *self = self.wrapping_add(by.into()); } } pub(crate) trait Jmp { type Pc; fn jmp(self, pc: &mut Self::Pc); }