Expand description
Finitomata — finite state machines with rich lifecycle callbacks, persistence, and supervision.
A Rust port of the Finitomata Elixir library, providing compile-time validated FSMs with actor-based supervision via joerl.
§Quick Start
ⓘ
use finitomata::{finitomata, Finitomata, FinitomataSupervisor, TransitionResult};
#[finitomata(
fsm = r#"
[*] --> idle
idle --> |start| running
running --> |stop| idle
idle --> |shutdown| off
off --> |confirm| [*]
"#,
syntax = "mermaid",
auto_terminate = true
)]
#[derive(Debug, Clone, Default)]
struct MyFsm;
#[async_trait::async_trait]
impl Finitomata for MyFsm {
type State = MyFsmState;
type Event = MyFsmEvent;
type Payload = String;
async fn on_transition(
&mut self, from: &MyFsmState, event: &MyFsmEvent,
_ep: &String, _sp: &mut String,
) -> TransitionResult<MyFsmState, String> {
// transition logic here
TransitionResult::Ok(MyFsmState::Running)
}
}Re-exports§
pub use callbacks::Finitomata;pub use callbacks::TransitionResult;pub use engine::TransitContext;pub use engine::TransitOutcome;pub use engine::transit;pub use error::FinitomataError;pub use error::PersistencyError;pub use error::ValidationError;pub use listener::Listener;pub use listener::NoopListener;pub use listener::TracingListener;pub use parser::FsmParser;pub use parser::ParseError;pub use parser::ParsedFsm;pub use parser::ParsedTransition;pub use persistency::Persistency;pub use state::BoundedHistory;pub use state::FsmState;pub use state::Lifecycle;pub use supervisor::FinitomataSupervisor;pub use timer::FsmTimer;pub use transition::EventKind;pub use transition::Transition;pub use transition::TransitionGraph;
Modules§
- cache
- Concurrent in-memory state cache for fast reads without actor round-trips.
- callbacks
- engine
- Core transition engine implementing the Finitomata callback sequence.
- error
- listener
- Transition observer trait and built-in implementations.
- parser
- persistency
- Persistence trait and backends for durable FSM state.
- state
- supervisor
- FSM supervision backed by joerl’s actor system.
- timer
- Recurring timer for FSM
on_timercallbacks. - transition
Structs§
- Actor
System - The actor system runtime.
- Child
Spec - Child specification for supervised actors.
- Pid
- Process identifier that uniquely identifies an actor.
- Restart
Intensity - Restart intensity limits to prevent infinite restart loops.
- Supervisor
Spec - Supervisor specification.
Enums§
- Restart
Strategy - Restart strategy for supervised actors.
Attribute Macros§
- finitomata
- Procedural macro for defining finite state machines.