Skip to main content

Crate finitomata

Crate finitomata 

Source
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_timer callbacks.
transition

Structs§

ActorSystem
The actor system runtime.
ChildSpec
Child specification for supervised actors.
Pid
Process identifier that uniquely identifies an actor.
RestartIntensity
Restart intensity limits to prevent infinite restart loops.
SupervisorSpec
Supervisor specification.

Enums§

RestartStrategy
Restart strategy for supervised actors.

Attribute Macros§

finitomata
Procedural macro for defining finite state machines.