枚举是一种自定义数据类型,包含一些确定的值。 它在枚举名称之前使用enum
关键字定义。 它还包括方法。
枚举的语法:
enum enum_name { variant1, variant2, . . }
在上面的语法中,enum_name
是枚举的名称,variant1
,variant2
,..
是与枚举名称相关的枚举值。
例如:
enum Computer_language{ C, C++, Java, }
在上面的例子中,computer_language
是枚举名称,C
,C++
,Java
是computer_language
的值。
下面创建每个变量的实例,如下所示:
let c = Computer_language::C; let cplus = Computer_language::C++; let java = Computer_language::Java;
在上面的场景中,分别创建了包含值C
,C++
,Java
的三个实例,即c
,cplus
,java
。 枚举的每个变体都在其标识符下命名,并使用双冒号。 这很有用,因为Computer_language::C
,Computer_language::C++
,Computer_language::Java
属于同一类型,即Computer_language
。
还可以在特定实例上定义函数,定义采用Computer_language
类型实例的函数; 然后它看起来像:
fn language_type(language_name::Computer_language);
任何变体都可以调用此函数:
language_type(Computer_language::C++);
通过一个例子来理解。
enum Employee { Name(String), Id(i32), Profile(String), } fn main() { let n = Employee::Name("Hema".to_string()); let i = Employee::Id(2); let p = Employee::Profile("Computer Engineer".to_string()); println!(" {:?} s {:?} b {:?}", n,i,p); }
执行上面示例代码,得到以下结果 -
Name("Hema") s Id(2) b Profile("Computer Engineer")
在上面的示例中,Employee
是一种自定义数据类型,它包含三个变体,如Name(String)
,Id(i32)
,Profile(String)
,而:?
用于打印每个变体的实例。