Comment faire correspondre les valeurs enum avec un entier?

Je peux obtenir une valeur entière d'un énumérations comme ceci:

enum MyEnum {
    A = 1,
    B,
    C,
}

let x = MyEnum::C as i32;

mais je n'arrive pas à le faire:

match x {
    MyEnum::A => {}
    MyEnum::B => {}
    MyEnum::C => {}
    _ => {}
}

Comment puis-je correspondre à l'encontre des valeurs de l'enum ou d'essayer de convertir les x retour à un MyEnum?

Je peux voir une fonction comme ceci étant utile pour les énumérations, mais il n'existe pas:

impl MyEnum {
    fn from<T>(val: &T) -> Option<MyEnum>;
}

source d'informationauteur dhardy