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