Rust-reference/types/enum

来自菜鸟教程
跳转至:导航、​搜索

Enumerated types

枚举类型

enum.md

commit: b0e0ad6490d6517c19546b1023948986578fc378
本章译文最后维护日期:2020-11-14

枚举类型是一种标称型(nominal)的、异构的、不相交的类型联合起来组成的类型,它直接用枚举(enum)程序项的名称来表示。[1]

枚举(enum)程序项同时声明了类型和它的各种变体(variants),其中每个变体都独立命名,可使用定义结构体、元组结构体或单元结构体(unit-like struct)的句法来定义它们。

枚举(enum)的实例可以在枚举变体表达式中构造。

任何枚举值消耗的内存和其同类型的其他变体都是相同的,具体都为其枚举(enum)类型的最大变体所需的内存再加上存储其判别值(discriminant)所需的内存。

枚举类型不能在结构上表示为类型,必须通过对枚举程序项的具名引用(named reference)来表示。[2]

  1. ../enum类型类似于 ML 中的数据(data)构造函数声明,或 Limbo 中的 pick ADT
  2. 译者理解这句话的意思是:枚举不同于普通结构化的类型,所有的枚举类型都是对枚举程序项的引用;这里引用分两种,一种是类C枚举,就是对程序项的直接具名引用;另一种是带字段的枚举变体,这种其实是类似于 BoxRc 这样的具名引用,它通过封装其他类型来指导数据的存储和限定其上可用的操作。