我在Rust中使用枚举来实现多态性。我需要一个可以包含整数或浮点值的向量:
enum Value {
Float(f32),
Int(i32),
}
let vec = Vec::<Value>::new();
vec.push(Value::Int(0));
vec.push(Value::Float(1.0));
有没有更简洁的方法来做到这一点,特别是当你只使用原始类型时?
答案 0 :(得分:1)
不,没有。
有减少代码量的技巧:
fn main() {
use Value::*;
let vec = vec![Int(0), Float(1.0)];
}
我实际上只是重命名原始类型
,这感觉很奇怪
这只是你程序的一件神器。例如,你的枚举和这个之间的计算机没有真正的区别:
enum MagicSpell {
Multiplier(f32),
NumberOfStomachs(i32),
}
然而,语义(a.k.a. names)是高度不同的。