我有一些类似于这样的代码
enum Value<'a> {
Int(i64),
Flt(f64),
Vec(&'a [Value<'a>]),
}
这使我可以重复使用一些数据。但是,有时我想接受堆分配的数据,所以我需要类似于这样的东西。
enum Value {
Int(i64),
Flt(f64),
Vec(Box<Vec<Value>>),
}
但现在我无法接受片段!我知道我可以把它们都放在同一个枚举中,像这样
enum Value<'a> {
Int(i64),
Flt(f64),
VecSlice(&'a [Value<'a>]),
VecBox(Box<Vec<Value<'a>>>),
}
但这非常丑陋。
有没有一种方法可以在同一个成员/变体中接受切片和向量?
我知道对于接受 &str 和 String 的函数,我们可以将参数设置为类似于 T: Into<String>
的东西,但我还没有想出如何在数据类型中处理向量的方法。
Box<Vec<Value>>
这个语句没有意义,它是将一个向量装箱。 - StargateurBox
。谢谢 :) - Joan Vene