statum 0.5.3

Compile-time state machine magic for Rust: Zero-boilerplate typestate patterns with automatic transition validation
Documentation

statum

statum provides compile-time verified typestate workflows for Rust.

This crate re-exports:

  • attribute macros: #[state], #[machine], #[transition], #[validators]
  • runtime types: statum::Error, statum::Result<T>
  • advanced traits: StateMarker, UnitState, DataState, CanTransition*
  • projection helpers: statum::projection

Install

[dependencies]
statum = "0.5.3"

Statum targets stable Rust and currently supports Rust 1.93+.

Mental Model

  • #[state] defines the legal phases
  • #[machine] defines the durable context
  • #[transition] defines the legal edges
  • #[validators] rebuilds typed machines from stored data

Minimal Example

use statum::{machine, state, transition};

#[state]
enum LightState {
    Off,
    On,
}

#[machine]
struct Light<LightState> {
    name: String,
}

#[transition]
impl Light<Off> {
    fn switch_on(self) -> Light<On> {
        self.transition()
    }
}

#[transition]
impl Light<On> {
    fn switch_off(self) -> Light<Off> {
        self.transition()
    }
}

Docs