brainiac_22ccb748d608358e 0.1.0

An implementation of the brainfuck esoteric computer language
Documentation
# brainiac_22ccb748d608358e

brainiac\_22ccb748d608358e is an implementation of the Brainfuck esoteric computer language in Rust's macro\_rules. 

It is named brainiac\_22ccb748d608358e to ensure that if there is a crate with a more apt need for the "brainiac" name, that this
"fun" crate doesn't take its place.

## Implementation

Brainfuck is a relatively simple language.

A program is initialized with a tape of 30,000 bytes, starting at index 0.

There are 8 commands available:
- `>`: Increment the index on the tape by 1
- `<`: Decrement the index on the tape by 1
- `+`: Increment the value at the current tape index by 1
- `-`: Decrement the value at the current tape index by 1
- `.`: Output the value at the current tape index to stdout
- `,`: Assign the tape at the current index a  u8 value off of stdin
- `[`: If the value at the current index of the tape is 0, move to the first command after a matching ']' character
- `]`: Jump back to the matching '[' character

## Limitations
There are several limitations due to how Rust interprets tokens in a macro:
- `>>` must be `> >`
- `->` must be `- >`
- `<<` must be `< <`
- `<-` must be `< -`
- `..` must be `. .`

This ensures that there aren't any symbols in invalid locations.

## Usage

Usage should be as easy as adding the package to your `Cargo.toml` manifest and
importing the brainfuck macro:

```rust
use brainiac_22ccb748d608358e::brainfuck;

fn main() {
    brainfuck! { [This does absolutely nothing except make the compiler do extra work.] }
}
```

## Special Thanks

To the [Little Book of Rust Macros](https://danielkeep.github.io/tlborm/book/index.html) for being an easy way to get started with macros in Rust,
and to Wikipedia's Brainfuck page, for explaining the rules of the language, and for the documented examples.