pub trait Decoder<const LEN: usize> {
type Error: From<InvalidLength>;
// Required methods
fn decoded_len(&self, len: usize) -> Result<usize, InvalidLength>;
fn decode_into<'a>(
&self,
dst: &'a mut [u8],
src: &[u8],
) -> Result<&'a [u8], Self::Error>;
// Provided method
fn decode(&self, src: &[u8]) -> Result<Vec<u8>, Self::Error> { ... }
}