Enums 如何从其判别式创建无字段枚举变量?

Enums 如何从其判别式创建无字段枚举变量?,enums,rust,Enums,Rust,如果我想知道枚举变量的判别式,我所需要做的就是my_variant as usize(或任何{integer}类型)。如果我有判别式,我想得到相应的变量呢 很明显,我尝试了相反的我的int作为MyEnum,但它(毫不奇怪)不起作用 enum Enu{ X,, Y } fn main(){ 让discr_x=Enu::x用作; 设x=magic(discr_x); } x应该是Enu::x在Rust中没有一种简洁的内置方法来实现这一点。有一些板条箱可以帮助解决这类问题,例如,但根据您拥有的枚举数

如果我想知道枚举变量的判别式,我所需要做的就是
my_variant as usize
(或任何
{integer}
类型)。如果我有判别式,我想得到相应的变量呢

很明显,我尝试了相反的
我的int作为MyEnum
,但它(毫不奇怪)不起作用

enum Enu{
X,,
Y
}
fn main(){
让discr_x=Enu::x用作;
设x=magic(discr_x);
}

x
应该是
Enu::x

在Rust中没有一种简洁的内置方法来实现这一点。有一些板条箱可以帮助解决这类问题,例如,但根据您拥有的枚举数,您最好自己实现它

我做过几次这样的事情:

#[repr(u8)]
发布枚举模式{
文本,
代码,
数字,
字母数字,
}
impl模式{
发布fn from(模式:u8)->模式{
匹配模式{
0=>Mode::Text,
1=>Mode::Code,
2=>模式::数字,
3=>模式::字母数字,
_=>模式::文本,
}
}
}
编辑:


有一些关于为什么默认情况下不可能这样做的附加上下文。

在Rust中没有一种简洁、内置的方法来实现这一点。有一些板条箱可以帮助解决这类问题,例如,但根据您拥有的枚举数,您最好自己实现它

我做过几次这样的事情:

#[repr(u8)]
发布枚举模式{
文本,
代码,
数字,
字母数字,
}
impl模式{
发布fn from(模式:u8)->模式{
匹配模式{
0=>Mode::Text,
1=>Mode::Code,
2=>模式::数字,
3=>模式::字母数字,
_=>模式::文本,
}
}
}
编辑:


有一些关于为什么默认情况下不可能这样做的附加上下文。

请不要回答重复的问题。您的解决方案已经存在:请不要回答重复的问题。您的解决方案已经存在: