pub trait ByteReader {
type Rev: ReverseByteReader;
// Required methods
fn read_u8(&mut self) -> Result<u8, ReaderErr>;
fn spown_reverse_reader_at(
&mut self,
offset: usize,
) -> Result<Self::Rev, ReaderErr>;
// Provided methods
fn read_u16(&mut self) -> Result<u16, ReaderErr> { ... }
fn read_u24(&mut self) -> Result<u32, ReaderErr> { ... }
fn read_u32(&mut self) -> Result<u32, ReaderErr> { ... }
fn read_u64(&mut self) -> Result<u64, ReaderErr> { ... }
}