5 releases (stable)
2.0.0 | May 5, 2022 |
---|---|
1.1.0 | Apr 19, 2022 |
1.0.1 | Apr 7, 2022 |
1.0.0 | Apr 3, 2022 |
0.1.0 | Mar 31, 2022 |
#2292 in Algorithms
24KB
416 lines
Rust State Machine
A (Finite) State Machine library
This Rust Library aims to provide a developer-friendly, Business-Oriented, (Finite) State Machine.
Features
- Use any type for your States and Events
- Define State Machines, even easier with the library's DSL
- Apply events on states to know the output
- Guard functions on transitions
More features coming Soon™
Examples
Quickly define your State Machine using the integrated DSL define!()
macro:
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:
fn main() {
let mut enum_light_switch = Machine::new();
enum_light_switch.add_transition(Transition::new(LightState::Off, LightEvent::TurnOn, LightState::On));
enum_light_switch.add_transition(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);
}