#状态机 #有限状态机 #状态 #fsm #事件队列 #异步编程

extfsm

具有内部事件队列和入口/退出转换的扩展有限状态机

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次下载

Apache-2.0

72KB
1.5K SLoC

Rust中的扩展有限状态机

Travis Build Status Coverage Status

简介

支持在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