bitio-rs 0.1.1

🚀A lightweight Rust library for bit-level I/O: read, peek, write, with both big-endian and little-endian support.
Documentation
use std::fmt::Formatter;

#[derive(Debug)]
pub enum BitReadWriteError {
    InvalidBitCount(usize),
    UnexpectedEof,
    UnalignedAccess,
}

impl std::fmt::Display for BitReadWriteError {
    fn fmt(&self, f: &mut Formatter) -> std::fmt::Result {
        match self {
            BitReadWriteError::InvalidBitCount(n) => {
                write!(f, "Bit count must be between 1-64, got {}", n)
            }
            BitReadWriteError::UnexpectedEof => write!(f, "Unexpected end of stream"),
            BitReadWriteError::UnalignedAccess => {
                write!(f, "Attempted to consume bytes while bits are buffered")
            }
        }
    }
}

impl std::error::Error for BitReadWriteError {}

impl From<BitReadWriteError> for std::io::Error {
    fn from(e: BitReadWriteError) -> Self {
        std::io::Error::new(std::io::ErrorKind::Other, e.to_string())
    }
}