3个版本 (重大变更)
0.9.0 | 2019年11月9日 |
---|---|
0.7.0 | 2018年10月4日 |
0.6.1 | 2018年9月18日 |
#36 in #fsm
60,057 每月下载量
在 sm 中使用
53KB
1.5K SLoC
SM旨在成为一个安全、快速和简单的状态机库。
-
安全 — Rust的类型系统、所有权模型和详尽的模式匹配可以防止你误用你的状态机
-
快速 — 零运行时开销,机器是100%静态的,所有验证都在编译时发生
-
简单 — 五个特质,以及一个可选的声明式宏,仅控制流,不附加业务逻辑
你可能正在寻找
快速示例
extern crate sm;
use sm::sm;
sm! {
Lock {
InitialStates { Locked }
TurnKey {
Locked => Unlocked
Unlocked => Locked
}
Break {
Locked, Unlocked => Broken
}
}
}
fn main() {
use Lock::*;
let lock = Machine::new(Locked);
let lock = lock.transition(TurnKey);
assert_eq!(lock.state(), Unlocked);
assert_eq!(lock.trigger().unwrap(), TurnKey);
}
依赖项
~2MB
~46K SLoC