在Rust中,似乎可以使用基本类型定义Enum作为表示:
enum A {
f64,
i32
}
Run Code Online (Sandbox Code Playgroud)
我该如何使用这样的枚举?例如,如何创建实例以及如何使用match语句处理不同的基元类型?
Cor*_*son 12
(这个答案是从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")
}
}
Run Code Online (Sandbox Code Playgroud)
要实际包装这些类型的值,您需要使用"类似于元组的变体":
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)
}
}
Run Code Online (Sandbox Code Playgroud)