statum 0.3.17

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

statum

statum provides an ergonomic typestate API for Rust with compile-time transition guarantees.

This crate re-exports:

  • Attribute macros: #[state], #[machine], #[transition], #[validators]
  • Runtime types: statum::Error, statum::Result<T>
  • Builder support: statum::bon

Install

[dependencies]
statum = "0.3"

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