bmf-parse 0.1.7

A parser for the BMF file format
Documentation
pub(crate) struct ParserState {
    pub(crate) offset: usize,
}

pub(crate) fn read<'a>(input: &'a [u8], state: &mut ParserState, n: usize) -> Option<&'a [u8]> {
    if state.offset + n <= input.len() {
        let slice = &input[state.offset..state.offset + n];
        state.offset += n;
        Some(slice)
    } else {
        println!(
            "read failed, offset: {}, n: {}, input.len(): {}",
            state.offset,
            n,
            input.len()
        );
        None
    }
}

#[inline]
pub(crate) fn is_empty(input: &[u8], state: &ParserState) -> bool {
    state.offset == input.len()
}

#[derive(Debug)]
pub enum Either<A, B> {
    A(A),
    B(B),
}