Rust 枚举
在Rust编程中,当我们需要从一个可能的变体列表中选择一个值时,我们使用枚举数据类型。枚举类型使用 enum 关键字声明。下面是枚举的语法−
示例:使用枚举
该示例声明了一个名为 GenderCategory 的枚举,其变体为 Male 和 Female。print! 宏显示枚举的值。如果未为 GenderCategory 实现 std::fmt::Debug 特性,则编译器将抛出错误。使用属性 #[derive(Debug)] 可以抑制此错误。
输出
Struct 和 Enum
以下示例定义了一个名为Person的结构体。字段gender的数据类型是GenderCategory枚举,可以被赋值为Male或Female。
这个示例创建了类型为 Person 的对象 p1 和 p2,并为每个对象初始化了属性 name 和 gender。
输出
选项枚举
选项是Rust标准库中的预定义枚举。该枚举有两个值:Some(数据)和None。
语法
这里,类型T
代表任何类型的值。
Rust不支持null
关键字。在enum Option
中,值None
可以被函数用来返回一个null值。如果有数据要返回,函数可以返回Some(data)
。
通过一个示例来理解:
该程序定义了一个名为is_even()
的函数,返回类型是Option
。该函数验证传入的值是否为偶数。如果输入是偶数,则返回true
,否则函数返回None
。
输出
匹配语句和枚举
匹配语句可以用来比较保存在枚举中的值。下面的示例定义了一个函数print_size,它接受CarType枚举作为参数。该函数将参数值与预定义的一组常量进行比较,并显示相应的消息。
输出
与选项匹配
返回Option类型的is_even函数的示例也可以使用match语句进行实现,如下所示 –
输出
匹配和枚举的数据类型
可以为枚举的每个变体添加数据类型。在下面的示例中,枚举的Name和Usr_ID变体分别为String和integer类型。以下示例演示了在具有数据类型的枚举中使用match语句的用法。