Introduction

This project aims to provide a simple interface for working with L-systems in the Rust programming language.

Examples

```rust let mut system: LSystem<&Fn(&Vec) -> String> = LSystem::withaxiom("b"); system.addrule('a', "ab"); system.add_rule('b', "a");

asserteq!(system.next().unwrap(), "b"); asserteq!(system.next().unwrap(), "a"); asserteq!(system.next().unwrap(), "ab"); asserteq!(system.next().unwrap(), "aba"); asserteq!(system.next().unwrap(), "abaab"); asserteq!(system.next().unwrap(), "abaababa"); ```

```rust let mut system: LSystem<&Fn(&Vec) -> String> = LSystem::withaxiom("baaaaaaa"); system.addrule('b', "a"); system.addcontextrule((Some("b"), 'a', None), "b");

asserteq!(system.next().unwrap(), "baaaaaaa"); asserteq!(system.next().unwrap(), "abaaaaaa"); asserteq!(system.next().unwrap(), "aabaaaaa"); asserteq!(system.next().unwrap(), "aaabaaaa"); asserteq!(system.next().unwrap(), "aaaabaaa"); asserteq!(system.next().unwrap(), "aaaaabaa"); asserteq!(system.next().unwrap(), "aaaaaaba"); asserteq!(system.next().unwrap(), "aaaaaaab"); assert_eq!(system.next().unwrap(), "aaaaaaaa"); ```