Define an enum for states and use match to transition between them.
enum State { Idle, Running, Stopped }
impl State {
fn next(&self) -> Self {
match self {
State::Idle => State::Running,
State::Running => State::Stopped,
State::Stopped => State::Idle,
}
}
}
fn main() {
let mut state = State::Idle;
state = state.next();
}