5个版本 (稳定)
2.0.0 | 2022年5月5日 |
---|---|
1.1.0 | 2022年4月19日 |
1.0.1 | 2022年4月7日 |
1.0.0 | 2022年4月3日 |
0.1.0 | 2022年3月31日 |
#2044 在 算法
24KB
416 行
Rust状态机
(有限)状态机库
此Rust库旨在为开发者提供友好的、面向业务的(有限)状态机。
特性
- 使用任何类型作为您的状态和事件
- 使用库的领域特定语言(DSL)定义状态机,更加简单
- 在状态上应用事件以了解输出
- 转换上的守卫函数
更多功能即将推出™
示例
使用集成DSL宏 define!()
快速定义您的状态机
fn main() {
let light_switch = define!(
"OFF" - "TURN_ON" -> "ON",
"ON" - "TURN_OFF" -> "OFF"
);
}
使用任何类型来定义您的 State
和 Event
,为什么不使用枚举呢
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);
}