pub trait Flash {
type Error;
// Required methods
fn read(&mut self, addr: u32, buf: &mut [u8]) -> Result<(), Self::Error>;
fn write(&mut self, addr: u32, data: &mut [u8]) -> Result<(), Self::Error>;
fn erase(&mut self, addr: u32) -> Result<(), Self::Error>;
}