Enums 如何配置Serde以使用枚举变量';什么是区别性的而不是名称?

Enums 如何配置Serde以使用枚举变量';什么是区别性的而不是名称?,enums,rust,serde,Enums,Rust,Serde,我正在解析一个INI样式的文件,该文件使用整数作为枚举数 #[derive(Debug, Deserialize, Serialize)] pub enum MyThing { First = 0, Second = 1, Third = 2, } 在文件中,值将被序列化,如下所示: thing=0 但是,默认情况下,Serde与变体名称匹配,而不是与判别式匹配。自定义实现反序列化是最干净的方法吗?Serde网站有: 使用serde_repr::*; #[派生(序列化

我正在解析一个INI样式的文件,该文件使用整数作为枚举数

#[derive(Debug, Deserialize, Serialize)]
pub enum MyThing {
    First = 0,
    Second = 1,
    Third = 2,
}
在文件中,值将被序列化,如下所示:

thing=0
但是,默认情况下,Serde与变体名称匹配,而不是与判别式匹配。自定义实现
反序列化
是最干净的方法吗?

Serde网站有:

使用serde_repr::*;
#[派生(序列化、反序列化、PartialEq、调试)]
#[报告(u8)]
枚举小素数{
二等于二,
三等于三,
五等于五,
七等于七,
}
fn main(){
使用SmallPrime::*;
让nums=vec![2,3,5,7];
//印刷品[2,3,5,7]
println!(“{}”,serde_json::to_string(&nums).unwrap());
assert_eq!(两个,serde_json::from_str(“2”).unwrap());
}
我相信这是最好的方法,因为它是由板条箱作者自己推荐的

[dependencies]
serde = "1.0"
serde_repr = "0.1"