Crates.io | statemachine |
lib.rs | statemachine |
version | 0.1.0 |
source | src |
created_at | 2020-09-09 19:54:30.054999 |
updated_at | 2020-09-09 19:54:30.054999 |
description | Provides utilities for working with statemachines. |
homepage | |
repository | https://gitlab.com/FloorIsJava/statemachine |
max_upload_size | |
id | 286834 |
size | 3,701 |
A Rust crate providing utilities for working with state machines. Documentation is available on docs.rs.
NOTE: In the future, this module will contain more machines and automata. Currently it only adds a way to define statemachines.
Add this to your Cargo.toml
:
[dependencies]
statemachine = "0.1"
use statemachine::statemachine;
statemachine! {
#[derive(Default)]
struct Foo {}
enum FooState consumes [char] from Start accepts [NonEmpty];
Start => {
char match _ => NonEmpty
},
NonEmpty => {
_ => NonEmpty
}
}
fn main() {
let mut foo: Foo = Default::default();
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());
}
This crate is published under the terms of the MIT license. See the LICENSE file for details.