# rust-bfi [![Build Status](https://travis-ci.org/levzhazeschi/rust-bfi.svg?branch=master)](https://travis-ci.org/levzhazeschi/rust-bfi) Simple and fast Brainfuck interpreter perfectly suited for machine learning needs. ## Example ```rust extern crate bfi; use bfi::{BfMachine, b}; let code = b("+++[->,.<]"); // `b` converts an `&str` to a byte vector: `pub fn b(s: &str) -> Vec` let input = b("jackdaws love my big sphinx of quartz"); let mut output = Vec::new(); let mut machine = BfMachine::new(); let res = machine.exec(&code, &input, &mut output); assert_eq!(output, b("jackdaws")); assert_eq!(res, Ok(code.len())); ``` ## Docs [Here](https://docs.rs/bfi) they are. ## Implementation details * The memory tape is infinitely long to the right. * Going to the left of the starting cell causes an `Err(BfError::Memory)`. * Cells can hold values from 0 to 255. * Addition and subtraction over- and underflow silently. * End of input results in an early return. ## Why another Brainfuck interpreter? I like idea of Brainfuck as an environment for reinforcement learning. After searching crates, I haven't found anything decent for interpreting BF in runtime, so I wrote this little thing.