小工具

  • enum和String转换库
//安装包
strum = { version = "0.24", features = ["derive"] }

#[derive(EnumString, Debug, PartialEq,Display)]
enum MyEnum{
    One,
    Two,
}

xxx.to_string()
  • enum和int转换
//安装包
num_enum = "0.5"

use num_enum::TryFromPrimitive;
use std::convert::TryFrom;

#[derive(Debug, Eq, PartialEq, TryFromPrimitive)]
#[repr(u8)]
enum Number {
    Zero,
    One,
}

fn main() {
    let zero = Number::try_from(0u8);
    assert_eq!(zero, Ok(Number::Zero));

    let three = Number::try_from(3u8);
    assert_eq!(
        three.unwrap_err().to_string(),
        "No discriminant in enum `Number` matches the value `3`",
    );
}