是否有一种更简洁的方式来使用枚举,特别是当它只有原始类型时?

时间:2018-04-07 07:18:24

标签: rust

我在Rust中使用枚举来实现多态性。我需要一个可以包含整数或浮点值的向量:

enum Value {
    Float(f32),
    Int(i32),
}

let vec = Vec::<Value>::new();
vec.push(Value::Int(0));
vec.push(Value::Float(1.0));

有没有更简洁的方法来做到这一点,特别是当你只使用原始类型时?

1 个答案:

答案 0 :(得分:1)

不,没有。

有减少代码量的技巧:

  1. 无需指定向量的类型。
  2. 您可以一次构建矢量。
  3. 您可以导入枚举变体。
  4. fn main() {
        use Value::*;
        let vec = vec![Int(0), Float(1.0)];
    }
    
      

    我实际上只是重命名原始类型

    ,这感觉很奇怪

    这只是你程序的一件神器。例如,你的枚举和这个之间的计算机没有真正的区别:

    enum MagicSpell {
        Multiplier(f32),
        NumberOfStomachs(i32),
    }
    

    然而,语义(a.k.a. names)是高度不同的。