brainfrick 1.1.2

An optimizing brainfuck interpreter with helpful errors.
Documentation
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum Step {
    Add(i8),
    Move(isize),
    Loop(LoopKind, usize),
    Output,
    Input,
    Debug,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum LoopKind {
    Begin,
    End,
}

impl LoopKind {
    pub fn should_jump(self, mem: &crate::mem::Memory) -> bool {
        let c = mem.get_cell() == 0;
        match self {
            Self::Begin => c,
            Self::End => !c,
        }
    }
}