|
|
@ -3,7 +3,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 一个真实场景的需求
|
|
|
|
## 一个真实场景的需求
|
|
|
|
在实际场景中,从枚举到整数的转换有时还是非常需要的,例如你有一个枚举类型,然后需要从外面穿入一个整数,用于控制后续的流程走向,此时就需要用整数去匹配相应的枚举(你也可以用整数匹配整数-, -,看看会不会被喷)。
|
|
|
|
在实际场景中,从枚举到整数的转换有时还是非常需要的,例如你有一个枚举类型,然后需要从外面传入一个整数,用于控制后续的流程走向,此时就需要用整数去匹配相应的枚举(你也可以用整数匹配整数-, -,看看会不会被喷)。
|
|
|
|
|
|
|
|
|
|
|
|
既然有了需求,剩下的就是看看该如何实现,这篇文章的水远比你想象的要深,且看八仙过海各显神通。
|
|
|
|
既然有了需求,剩下的就是看看该如何实现,这篇文章的水远比你想象的要深,且看八仙过海各显神通。
|
|
|
|
|
|
|
|
|
|
|
@ -180,7 +180,7 @@ enum MyEnum {
|
|
|
|
fn main() {
|
|
|
|
fn main() {
|
|
|
|
let x = MyEnum::C;
|
|
|
|
let x = MyEnum::C;
|
|
|
|
let y = x as i32;
|
|
|
|
let y = x as i32;
|
|
|
|
let z: MyEnum = unsafe { ::std::mem::transmute(y) };
|
|
|
|
let z: MyEnum = unsafe { std::mem::transmute(y) };
|
|
|
|
|
|
|
|
|
|
|
|
// match the enum that came from an int
|
|
|
|
// match the enum that came from an int
|
|
|
|
match z {
|
|
|
|
match z {
|
|
|
@ -197,4 +197,4 @@ fn main() {
|
|
|
|
## 总结
|
|
|
|
## 总结
|
|
|
|
本文列举了常用(其实差不多也是全部了,还有一个 unstable 特性没提到)的从整数转换为枚举的方式,推荐度按照出现的先后顺序递减。
|
|
|
|
本文列举了常用(其实差不多也是全部了,还有一个 unstable 特性没提到)的从整数转换为枚举的方式,推荐度按照出现的先后顺序递减。
|
|
|
|
|
|
|
|
|
|
|
|
但是推荐度最低,不代表它就没有出场的机会,只要使用边界清晰,一样可以大方光彩,例如最后的`transmute`函数.
|
|
|
|
但是推荐度最低,不代表它就没有出场的机会,只要使用边界清晰,一样可以大放光彩,例如最后的`transmute`函数.
|