pub trait BitReader {
type Error: Error;
// Required method
fn read_bit(&mut self) -> Result<bool, Self::Error>;
// Provided methods
fn read_bits_into(
&mut self,
dst: &mut BitSlice<u8, Msb0>
) -> Result<(), Self::Error> { ... }
fn skip(&mut self, n: usize) -> Result<(), Self::Error> { ... }
}