2 个版本 (1 个稳定版)
使用旧的 Rust 2015
1.0.0 | 2016年1月15日 |
---|---|
0.1.0 | 2015年6月13日 |
#2215 在 算法
89 每月下载量
5KB
72 行
MicroState
最小化有限状态机。
描述
有限状态机一次只处于一个状态。从那里,当由触发事件(转换)启动时,它可以从一个状态转换到另一个状态。有限状态机完全由状态列表以及触发状态之间转换的转换定义。
这正是这个crate所做的事情:它让您定义状态和转换。其余的由您自己完成。
受 @soveran 的 micromachine 在 Ruby 中的启发。
文档
用法
首先需要导入宏
#[macro_use] extern crate microstate;
然后您可以创建一个新的状态机并调用转换。
microstate!{
MicroMachine { New };
states { New, Confirmed, Ignored };
confirm {
New => Confirmed
}
ignore {
New => Ignored
}
reset {
Confirmed => New
Ignored => New
}
}
let mut machine = MicroMachine::new();
machine.confirm(); // => Some(Confirmed)
machine.state(); // => Confirmed
machine.ignore(); // => None
machine.state(); // => Confirmed
machine.reset(); // => Some(New)
machine.state(); // => New
machine.ignore(); // => Some(Ignored)
machine.state(); // => Ignored
贡献
如果您发现错误或想以其他方式帮忙,请 打开一个问题。
许可证
MIT。见 LICENSE。