statum-macros 0.8.5

Proc macros for representing legal workflow and protocol states explicitly in Rust
Documentation
#![allow(unused_imports)]
extern crate self as statum;
pub use statum_core::__private;
pub use statum_core::TransitionInventory;
pub use statum_core::{
    CanTransitionMap, CanTransitionTo, CanTransitionWith, DataState, Error, MachineDescriptor,
    MachineGraph, MachineIntrospection, MachineStateIdentity, RebuildAttempt, RebuildReport, StateDescriptor, StateMarker,
    TransitionDescriptor, UnitState,
};


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


#[state]
enum FlowState {
    Draft,
    Done,
}

#[machine]
struct AlphaMachine<FlowState> {}

#[transition]
impl AlphaMachine<Draft> {
    fn finish(self) -> AlphaMachine<Done> {
        self.transition()
    }
}

#[machine]
struct BetaMachine<FlowState> {}

#[transition]
impl BetaMachine<Draft> {
    fn finish(self) -> BetaMachine<Done> {
        self.transition()
    }
}

fn main() {
    let alpha = AlphaMachine::<Draft>::builder().build();
    let _ = alpha.finish();

    let beta = BetaMachine::<Draft>::builder().build();
    let _ = beta.finish();
}