Expand description
一种类型,可以是几种变体中的任何一种。
Rust 中的枚举与其他编译语言 (如 C) 相似,但有一些重要区别,使它们的功能更加强大。 如果您来自函数式编程背景,那么 Rust 所谓的枚举通常被称为 代数数据类型。 重要的细节是,每个枚举变体都可以有相应的数据。
enum SimpleEnum {
FirstVariant,
SecondVariant,
ThirdVariant,
}
enum Location {
Unknown,
Anonymous,
Known(Coord),
}
enum ComplexEnum {
Nothing,
Something(u32),
LotsOfThings {
usual_struct_stuff: bool,
blah: String,
}
}
enum EmptyEnum { }
Run显示的第一个枚举是在 C 风格语言中常见的一种枚举。
第二个示例展示了一个存储位置数据的假设示例,其中 Coord
是需要的任何其他类型,例如结构体。
第三个示例演示了变体可以存储的数据类型,从无到有,到元组,再到匿名结构体。
实例化枚举变体涉及显式地使用枚举的名称作为它的命名空间,后跟一个变体。
SimpleEnum::SecondVariant
就是上面的一个例子。
当数据跟一个变体一起使用时,例如 rust 的内置 Option
类型,该数据将按类型描述添加,例如 Option::Some(123)
。
类似于结构体的变体也是如此,类似 ComplexEnum::LotsOfThings {通常 _struct_stuff: true, blah: "hello!".to_string(), }
.
空枚举与 !
相似,因为它们根本无法实例化,并且主要用于以有趣的方式弄乱类型系统。