スタックに "Trait を実装したオブジェクト" を格納したいです。
Rust では Vec
をスタックとして使うのが通例だということで、以下のコードを書いたのですが、Trait のサイズがコンパイル時に定まらないので Vec
には格納できません。 (コンパイルエラー)
代替案、または解決策はあるでしょうか。
trait Trait<T>{}
struct Struct<T> {
a: Vec<Trait<T>>
}
fn main() {}
コンパイルエラーのメッセージは以下です。
error[E0277]: the trait bound `Trait<B> + 'static: std::marker::Sized` is not satisfied.
= note: `Trait<B> + 'static` does not have a constant size known at compile-time
= note: required by `std::vec::Vec`