Rust枚举类型中的基本类型

8
在Rust中,似乎可以使用基本类型作为枚举的表示方式:
enum A {
    f64,
    i32
}

如何使用此枚举?例如,我如何创建一个实例,并如何使用匹配语句来处理不同的原始类型?

2个回答

13

(此答案截至0.9版本)

这并不完全是你想要的效果。它创建了一个名为A的枚举,其中包含命名为f64i32的变体,而不是使用那些类型。由于类型和其他所有内容(变量等)共享不同的命名空间,因此您可能没有注意到。以下是使用原始枚举的示例:

enum A {
    f64,
    i32
}

fn main() {
   let x: A = f64;
   let y: A = i32;

   match x {
       f64 => println!("got f64"),
       i32 => println!("got i32")
   }
}

要实际包装这些类型的 ,您需要使用“类似元组的变体”:

enum A {
    Float(f64),
    Int(i32)
}

fn main() {
    let x: A = Float(42.0);
    let y: A = Int(7);

    match x {
        Float(value) => println!("got Float({})", value),
        Int(value) => println!("got Int({})", value)
    }
}

3

你没有得到预期的结果,请检查以下输出内容:

enum A {
    f64,
    i32
}

fn main() {
    let x:A = f64;
    let y:A = i32;
    println!("{}, {}", x as int, y as int);
}

f64i32只是枚举的变体,就像常量的任何其他名称一样。这种方式更像C枚举而不是C联合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接