我有一个特质 Foo,具体类型 A 和 B 都受特质 Foo 的约束。我想返回 a Vec<Foo>
,其中 Foo 可以是具体类型 A 或 B,如下所示:
trait Foo { }
pub struct A {}
pub struct B {}
impl Foo for A {}
impl Foo for B {}
fn test() -> Vec<Foo> {
let generic_vec: Vec<Foo> = Vec::new();
generic_vec.push(A {});
generic_vec.push(B {});
return generic_vec;
}
此刻的编译器正在抛出未为 Foo 实现大小特征的错误。我可以将 Foo 包装在一个 Box 中,但我不想返回一个 Vec 特征对象,因为它们会带来运行时开销。
我想知道是否有一些 Rust 泛型功能可以让我返回泛型类型的 Vec 而不必使用 trait 对象。