How to implement state machine with enums

Implement a state machine in Rust by defining an enum for states and using match expressions to handle transitions.

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();
}