#状态 #自动机 #有限状态机

statemachine

提供与状态机一起工作的实用工具。

1个不稳定版本

0.1.0 2020年9月9日

#220解析器工具

MIT 许可证

3KB

statemachine

一个提供与状态机一起工作的实用工具的Rust包。文档可在docs.rs上找到。

注意:将来,这个模块将包含更多的机器和自动机。目前,它仅提供定义状态机的方法。

用法

将此添加到您的 Cargo.toml

[dependencies]
statemachine = "0.1"

入门指南

use statemachine::statemachine;

statemachine! {
    #[derive(Default)]
    struct Foo {}

    enum FooState consumes [char] from Start accepts [NonEmpty];

    Start => {
        char match _ => NonEmpty
    },

    NonEmpty => {
        _ => NonEmpty
    }
}

fn main() {
    let mut foo: Foo = Default::default();
    assert!(!foo.is_accepting());
    foo.consume('a');
    assert!(foo.is_accepting());
    foo.consume('b');
    assert!(foo.is_accepting());
    foo.consume('c');
    assert!(foo.is_accepting());
}

许可证

此包根据MIT许可证的条款发布。有关详细信息,请参阅LICENSE文件。

依赖关系

~1.5MB
~35K SLoC