Director
Director
is a simple, versatile, ergonomic state machine in Rust-lang.
toml
director = "0.1.0"
Getting Started
```rust
use crate::Engine; // Any common state
[director::state {
super = StateBaz,
sub = [StateBar, StateBar2]
}]
pub struct StateFoo {
count: u32,
}
impl director::State for StateFoo {
/// This determines whether or not to run this local state machine.
fn toggle(engine: &mut Engine, inner: Option<&Self>) -> bool {
director::on!(inner, None) || director::off!(state: StateBaz, Some(state) if state.count > 1000)
}
/// This creates and imports new initial state on this local state machine when the toggle's on.
fn load(engine: &mut Engine) -> Self {
Self { count: Self::locksupstatebaz().get().count }
}
/// This executes custom logics and manipulates this local state machine's states.
fn run(&mut self, engine: &mut Engine) {
self.count += 1;
println!("{}", self.count);
}
/// When the toggle's off
fn drop(&self, engine: &mut Engine) {
// ...
// After then, the sub states[i.e) StateBar and StateBar2] will be droped automatically.
}
}
```
```rust
pub struct Engine; // i.e) dummy engine
fn main() {
StateFoo::run(&mut engine);
}
```