A simple state machine for rust
Copied from tests
```rust // define an traffic light enumeration
enum TrafficLight { Red, RedYellow, Green, Yellow }
// implement State trait for state enumeration
impl State
enum TrafficFeature { Drive }
impl Feature
// usage
fn trafficlighttransitions() { let mut statemachine = StateMachine::new(TrafficLight::Red); assert!(statemachine.set(TrafficLight::RedYellow).isok()); assert!(statemachine.set(TrafficLight::Green).isok()); assert!(statemachine.set(TrafficLight::Yellow).isok()); assert!(statemachine.set(TrafficLight::RedYellow).is_err()); }
fn trafficlightfeatures() { let mut statemachine = StateMachine::new(TrafficLight::Red); assert!(!statemachine.feature_allowed(&TrafficFeature::Drive));
assert!(state_machine.set(&TrafficLight::RedYellow).is_ok());
assert!(!state_machine.feature_allowed(&TrafficFeature::Drive));
assert!(state_machine.set(&TrafficLight::Green).is_ok());
assert!(state_machine.feature_allowed(&TrafficFeature::Drive));
assert!(state_machine.set(&TrafficLight::Yellow).is_ok());
assert!(!state_machine.feature_allowed(&TrafficFeature::Drive));
} ```