📜  Rust枚举

📅  最后修改于: 2021-01-08 13:41:55             🧑  作者: Mango

什么是Rust Enum?

枚举是一种自定义数据类型,其中包含一些确定的值。它在枚举名称之前用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,cplus,java,分别包含值C,C++,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++);

让我们通过一个例子来理解。

 #[derive(Debug)]
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)。 “:?”用于打印每个变量的实例。