pub trait Read<'a>: Sized { type Output; fn read(bytes: &'a [u8], position: Position<Self>) -> Self::Output; }