pub trait Read<'de> {
type Error: Display + Debug;
fn read(&mut self, length: usize) -> Result<&'de [u8], Self::Error>;
fn read_variant<E>(&mut self) -> Result<u32, Self::Error>
where
E: ByteOrder;
fn read_length<E>(&mut self) -> Result<usize, Self::Error>
where
E: ByteOrder;
fn read_char<E>(&mut self) -> Result<Result<char, u32>, Self::Error>
where
E: ByteOrder;
}