Keyword enum

source ·
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(), }. 空枚举与 ! 相似,因为它们根本无法实例化,并且主要用于以有趣的方式弄乱类型系统。

有关更多信息,请查看 Rust 书Reference