Crate mode[−][src]
Expand description
A simple and effective state machine library, written in in idiomatic, 100% safe, stable Rust code.
This library provides three main types, Automaton
, Mode
, and Family
, which facilitate the creation of finite
state machines. An Automaton
can be used to quickly create a state machine over some Family
of concrete types
that implement the Mode
trait. This can contain either:
- a single, concrete type representing all states in the state machine, e.g. a
struct
or anenum
, or - one or more separate types that all implement some common
dyn Trait
, with each type representing a distinct state in the state machine.
The Automaton
keeps track of a current instance of Mode
, and provides external access to any members that are
common to all Mode
s in the Family
. A flexible transition system provides a way to swap in a new Mode
in the
same Family
, when ready, and is designed such that state from the current Mode
can be moved directly into the
new Mode
being created. This can help prevent spikes in memory usage when transitioning between Mode
s that own
large amounts of data.
Examples
- For a simple example of how to use this library to implement a simple state machine over a single, concrete type,
please see
examples/enum.rs
. - For a more advanced example demonstrating a state machine over several types in the same
Family
, please seeexamples/activity.rs
. - For an example demonstrating how to pass context into and out of transition functions, please see
examples/turing.rs
.
You can run the examples using the following Cargo commands:
cargo run --example enum cargo run --example activity cargo run --example turing
Getting started
A good place to start reading would be the Automaton
documentation, followed by
Mode
and then Family
.
Structs
Represents a state machine over a set of Mode
s within the same Family
.
Traits
A meta-trait
defining the common Base
type and Mode
storage conventions used by a related group of Mode
implementations. Mode
s can only transition to other Mode
s within the same Family
, i.e. where both Mode
s
share the same Family
associated type
.
Trait that defines a state within some Family
, and can be made active in an Automaton
.