8个版本 (破坏性更新)
0.9.0 | 2019年11月9日 |
---|---|
0.7.0 | 2018年10月4日 |
0.6.1 | 2018年9月18日 |
0.5.0 | 2018年9月11日 |
0.1.0 | 2018年9月1日 |
#26 in #fsm
60,310 每月下载量
在 3 个crate中使用 (2直接使用)
24KB
85 行
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);
}
依赖关系
~0–285KB