pub trait BlockDevice {
// Required methods
fn blocks(&mut self) -> Result<u32, DeviceError>;
fn write(&mut self, b: &[Block], start: u32) -> Result<(), DeviceError>;
fn read(&mut self, b: &mut [Block], start: u32) -> Result<(), DeviceError>;
// Provided methods
fn write_single(&mut self, b: &Block, start: u32) -> Result<(), DeviceError> { ... }
fn read_single(
&mut self,
b: &mut Block,
start: u32,
) -> Result<(), DeviceError> { ... }
}