pub trait BitRead {
type Output;
fn read_bits(&mut self, n: usize) -> std::io::Result<Self::Output>;
}
pub trait BitPeek {
type Output;
fn peek_bits(&mut self, n: usize) -> std::io::Result<Self::Output>;
}
pub trait BitWrite {
fn write_bits(&mut self, value: u64, n: usize) -> std::io::Result<()>;
}