bread-cli 2.0.0

byte conversion tool
Documentation
use crate::error::OutError;
use std::io::Write;

pub mod literals {
    pub const _0: u8 = b'0';
    pub const _1: u8 = b'1';
    pub const _2: u8 = b'2';
    pub const _3: u8 = b'3';
    pub const _4: u8 = b'4';
    pub const _5: u8 = b'5';
    pub const _6: u8 = b'6';
    pub const _7: u8 = b'7';
    pub const _8: u8 = b'8';
    pub const _9: u8 = b'9';
    pub const _A: u8 = b'a';
    pub const _B: u8 = b'b';
    pub const _C: u8 = b'c';
    pub const _D: u8 = b'd';
    pub const _E: u8 = b'e';
    pub const _F: u8 = b'f';
    pub const _G: u8 = b'g';
    pub const _H: u8 = b'h';
    pub const _I: u8 = b'i';
    pub const _J: u8 = b'j';
    pub const _K: u8 = b'k';
    pub const _L: u8 = b'l';
    pub const _M: u8 = b'm';
    pub const _N: u8 = b'n';
    pub const _O: u8 = b'o';
    pub const _P: u8 = b'p';
    pub const _Q: u8 = b'q';
    pub const _R: u8 = b'r';
    pub const _S: u8 = b's';
    pub const _T: u8 = b't';
    pub const _U: u8 = b'u';
    pub const _V: u8 = b'v';
    pub const _W: u8 = b'w';
    pub const _X: u8 = b'x';
    pub const _Y: u8 = b'y';
    pub const _Z: u8 = b'z';
    pub const _EXCL: u8 = b'!';
    pub const _STAR: u8 = b'*';
}

pub fn write<W: Write>(
    out_bytes: &mut W,
    bytes: &[u8],
    expected_write: usize,
) -> Result<(), OutError> {
    match out_bytes.write(bytes) {
        Ok(n) => {
            if n == expected_write {
                Ok(())
            } else {
                Err(OutError::ShortIO {
                    bytes: n,
                    expected: expected_write,
                })
            }
        }
        Err(e) => Err(OutError::StdIO(e)),
    }
}