How to Convert Between Enums and Integers in Rust

Convert Rust enums to integers and back using the From and Into traits with match expressions.

Use the From and Into traits to convert between enums and integers safely and idiomatically. Implement From<u8> for your enum to convert integers to variants, and From<YourEnum> to convert variants back to integers.

#[derive(Debug)]
enum Status { Ok = 0, Error = 1 }

impl From<u8> for Status {
    fn from(value: u8) -> Self {
        match value {
            0 => Status::Ok,
            1 => Status::Error,
            _ => panic!("Invalid status"),
        }
    }
}

impl From<Status> for u8 {
    fn from(status: Status) -> Self {
        match status {
            Status::Ok => 0,
            Status::Error => 1,
        }
    }
}

fn main() {
    let s: Status = 0u8.into();
    let i: u8 = s.into();
}