A (Finite) State Machine library
This Rust Library aims to provide a developer-friendly, Business-Oriented, (Finite) State Machine.
More features coming Soon™
Quickly define your State Machine using the integrated DSL define!()
macro:
rust
fn main() {
let light_switch = define!(
"OFF" - "TURN_ON" -> "ON",
"ON" - "TURN_OFF" -> "OFF"
);
}
Use any type to define your State
s and Event
s, why not enums:
```rust
fn main() {
let mut enumlightswitch = Machine::new();
enumlightswitch.addtransition(Transition::new(LightState::Off, LightEvent::TurnOn, LightState::On));
enumlightswitch.addtransition(Transition::new(LightState::On, LightEvent::TurnOff, LightState::Off));
let mut state_light = StatefulLight { state: LightState::Off };
enum_light_switch.apply(&mut state_light, LightEvent::TurnOn);
} ```