rust - Rust 枚举中的原始类型

标签 rust

在 Rust 中,似乎可以定义一个具有基本类型作为表示的枚举:

enum A {
    f64,
    i32
}

我如何使用这样的枚举?例如,我将如何创建实例以及如何使用匹配语句来处理不同的原始类型?

最佳答案

(此答案截至 0.9)

这并不像您认为的那样。它正在创建一个枚举 A,其中包含 named 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)
    }
}

关于rust - Rust 枚举中的原始类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21214964/

相关文章:

rust - 返回通用函数指针的函数

rust - 如何使用 no_std 且没有分配器将输出格式化为字节数组?

rust - 如何确定是否将 .clone() 和 .cloned() 与迭代器一起使用

rust - 我如何使用Diesel的主键以外的其他列查找值?

rust - 为什么转移所有权后可以使用非捕获闭包?

iterator - 为什么 Fuse 迭代器适配器没有按预期工作?

rust - rust 错误: value of type `std::vec::Vec<i32>` cannot be built from `std::iter::Iterator<Item=&i32>`

rust - 使用 Chrono 计算现在和下一个午夜之间的持续时间

rust - 如何使用macro_rules 定义带有可选#[cfg] 的结构?

parameters - Rust 标准库闭包参数 : run time or compile time?