statemachine-macro

Crates.iostatemachine-macro
lib.rsstatemachine-macro
version0.1.1
sourcesrc
created_at2020-09-09 19:51:52.991863
updated_at2020-09-09 22:23:50.585089
descriptionProvides the statemachine!() macro for easily creating statemachines.
homepage
repositoryhttps://gitlab.com/FloorIsJava/statemachine-macro
max_upload_size
id286833
size36,142
FloorIsJava (RealFloorIsJava)

documentation

README

statemachine-macro

A Rust crate providing a macro to easily create state machines. Documentation is available on docs.rs.

Usage

Add this to your Cargo.toml:

[dependencies]
statemachine-macro = "0.1"

Getting Started

use statemachine_macro::*;

statemachine! {
    struct Foo;

    enum FooState consumes [char] from Start accepts [NonEmpty];

    Start => {
        char match _ => NonEmpty
    },

    NonEmpty => {
        _ => NonEmpty
    }
}

fn main() {
    let mut foo: Foo = statemachine_new!(Foo{});
    assert!(!foo.is_accepting());
    foo.consume('a');
    assert!(foo.is_accepting());
    foo.consume('b');
    assert!(foo.is_accepting());
    foo.consume('c');
    assert!(foo.is_accepting());
}

License

This crate is published under the terms of the MIT license. See the LICENSE file for details.

Commit count: 4

cargo fmt