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算法

MIT 许可证

24KB
416

Rust状态机

Build

(有限)状态机库

此Rust库旨在为开发者提供友好的、面向业务的(有限)状态机。

特性

  • 使用任何类型作为您的状态和事件
  • 使用库的领域特定语言(DSL)定义状态机,更加简单
  • 在状态上应用事件以了解输出
  • 转换上的守卫函数

更多功能即将推出™

示例

使用集成DSL宏 define!() 快速定义您的状态机

fn main() {
    let light_switch = define!(
        "OFF" - "TURN_ON"  -> "ON",
        "ON"  - "TURN_OFF" -> "OFF"
    );
}

使用任何类型来定义您的 StateEvent,为什么不使用枚举呢

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);
}

无运行时依赖