Code Fix

上級E0782: trait objects must include the `dyn` keyword の原因と直し方 › パターン5

E0782: trait objects must include the `dyn` keyword の原因と直し方

トレイトを直接型として使おうとすると、コンパイル時のサイズが確定できないためエラーになります。

 1  trait Payment {
 2      fn amount(&self) -> i32;
 3  }
 4  struct Cash;
 5  impl Payment for Cash {
 6      fn amount(&self) -> i32 { 500 }
 7  }
 8  fn main() {
 9      let payments: Vec<Box<___________>> = vec![Box::new(Cash)];
                                   ^
10      println!("{}", payments[0].amount());
11  }
error[E0782]: trait objects must include the `dyn` keyword

空欄を埋めて実行を通す

広告
広告スロット(未設定)

E0782: trait objects must include the `dyn` keyword の原因と直し方

トレイトオブジェクトとして扱いたい場合は、dynキーワードを付けてBox<dyn Trait>や&dyn Traitのようにポインタ経由にする必要があります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)