use crate::state_defs::trait_defs::start_state::StartState;
use crate::state_defs::trait_defs::state::State;
pub struct StateMaster<'a> {
state: Box<dyn State + 'a>,
}
impl<'a> StateMaster<'a> {
pub fn new<S: StartState + 'a>() -> StateMaster<'a> {
StateMaster {
state: Box::new(S::new()),
}
}
}
impl<'a> StateMaster<'a> {
pub fn start(mut self) {
loop {
self.state.run();
self.state = match self.state.next() {
Some(next) => next,
None => {
return;
}
};
}
}
}