Enum Conversion

Chester Wyke January 19, 2025 Updated: April 15, 2025 #rust

Switching back and forth between an Enum and u8

Sources:

#!/usr/bin/env -S cargo +nightly -Zscript
---cargo
package.edition = "2021" # Desirable to stop warning but not needed
[dependencies]
strum = { version = "0.26.3", features = ["derive"] }
---

use strum::FromRepr;

#[derive(FromRepr, Debug, PartialEq)]
#[repr(u8)]
enum MyEnum {
    A = 1,
    B,
    C,
}

fn main() {
    // u8 to Enum
    let x = MyEnum::from_repr(2);
    assert_eq!(x, Some(MyEnum::B));

    // Enum to u8
    let x = MyEnum::C as u8;
    assert_eq!(x, 3);
}