#![deny(missing_docs)]
use smlang::statemachine;
#[derive(PartialEq)]
pub struct MyStateData(pub u32);
statemachine! {
transitions: {
State2 + Event2 / action = State1,
*State1(MyStateData) + Event1 = State2,
}
}
pub struct Context;
impl StateMachineContext for Context {
fn action(&mut self) -> Result<MyStateData, ()> {
Ok(MyStateData(42))
}
}
fn main() {
let mut sm = StateMachine::new(Context, MyStateData(42));
let _ = sm.process_event(Events::Event1);
let result = sm.process_event(Events::Event2);
assert!(matches!(result, Ok(&States::State1(MyStateData(42)))));
}