use crate::{Short, Value}; pub(crate) trait Ram { fn peek(&self, addr: Short) -> V; fn poke(&mut self, addr: Short, val: V); } impl Ram for [u8; 65536] { fn peek(&self, addr: Short) -> V { V::peek(self, addr) } fn poke(&mut self, addr: Short, val: V) { val.poke(self, addr) } } pub(crate) trait Peek { type Ram; fn peek(ram: &Self::Ram, addr: Short) -> Self; } pub(crate) trait Poke { type Ram; fn poke(self, ram: &mut Self::Ram, addr: Short); }