枚举是一种自定义数据类型,包含一些确定的值。 它在枚举名称之前使用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),而:? 用于打印每个变体的实例。