我有一个特征 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;
}
Run Code Online (Sandbox Code Playgroud)
目前的编译器抛出错误,即未为 Foo 实现 sized trait。我可以将 Foo 包装在一个 Box 中,但我不想返回 trait 对象的 Vec,因为它们会带来运行时开销。
我想知道是否有一些 Rust 泛型特性可以让我返回泛型类型的 Vec 而不必使用特征对象。