dcc-lsystem 0.6.3

An implementation of a Lindenmayer system together with some rendering tools
Documentation
use image::Rgb;

use dcc_lsystem::renderer::ImageRendererOptionsBuilder;
use dcc_lsystem::renderer::Renderer;
use dcc_lsystem::turtle::TurtleAction;
use dcc_lsystem::turtle::TurtleLSystemBuilder;

fn main() {
    let mut builder = TurtleLSystemBuilder::new();

    builder
        .token("0", TurtleAction::Forward(50))
        .token("1", TurtleAction::Forward(50))
        .token("L", TurtleAction::Rotate(45))
        .token("R", TurtleAction::Rotate(-45))
        .token("[", TurtleAction::Push)
        .token("]", TurtleAction::Pop)
        .axiom("0")
        .rule("1 => 1 1")
        .rule("0 => 1 [ L 0 ] R 0")
        .rotate(90);

    let (mut system, renderer) = builder.finish();
    system.step_by(9);

    let options = ImageRendererOptionsBuilder::new()
        .padding(20)
        .thickness(5.5)
        .fill_color(Rgb([255u8, 255u8, 255u8]))
        .line_color(Rgb([0u8, 100u8, 100u8]))
        .build();

    renderer
        .render(&system, &options)
        .save("fractal_binary_tree.png")
        .expect("Failed to save to fractal_binary_tree.png");
}