pub trait Device {
type Error: Debug;
// Required methods
fn read(&mut self) -> Result<Option<u8>, Self::Error>;
fn write(&mut self, byte: u8) -> Result<(), Self::Error>;
fn write_error(&mut self, byte: u8) -> Result<(), Self::Error>;
}