11个版本 (7个破坏性更新)
使用旧的Rust 2015
0.12.1 | 2022年1月30日 |
---|---|
0.11.0 | 2018年10月24日 |
0.10.0 | 2018年10月3日 |
0.8.0 | 2018年4月29日 |
0.5.2 | 2017年7月13日 |
#1512 in 算法
每月31次下载
72KB
1.5K SLoC
Rust中的扩展有限状态机
简介
支持在Rust中编程扩展有限状态机(FSM)的库。该机器并非为了最快的零拷贝速度而构建,而是为了最大的灵活性和可维护性。选择非零拷贝设计是因为在事件处理之后,它会存储状态并返回控制权,否则会对用户管理生命周期造成极大负担。
FSM是长期工程经验中最干净的方式来实现组件间的异步协议。
特性
- 内部事件队列允许机器在转换完成时对自己发布事件
- 支持每个状态的可选转换
- 事件可以携带动态参数,在转换执行时可以访问
- 机器可以生成自己的.dot图,可以轻松转换为.pdf或.svg,支持彩色边框,并总结了相同起始和结束状态的转换
- 支持slog调试
- 在处理事件时可以检查机器的扩展状态
- 机器的转换可以只读遍历
- 使用享元模式以不同的扩展状态运行同一FSM的多个实例
许可
版权(c)2017,Juniper Networks,Inc。保留所有权利。
根据Apache许可证版本2.0(“许可证”);除非您根据许可证进行使用,否则不得使用此文件。本代码不是Juniper的官方产品。您可以在以下位置获得许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言规定权限和限制,请参阅许可证。
依赖项
~1MB
~21K SLoC