finitomata 0.1.0

Finite state machines with rich lifecycle callbacks, persistence, and supervision
Documentation

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)
    }
}