t_wの輪郭

Feedlyでフォローするボタン
RustdynResult<(), Box<Error>>特質trait
error[E0782]: trait objects must include the `dyn` keyword 
  --> src\main.rs:26:42
   |
26 | fn run(config: Config) -> Result<(), Box<Error>> {    
   |                                          ^^^^^        
   |
help: add `dyn` keyword before this trait
   |
26 | fn run(config: Config) -> Result<(), Box<dyn Error>> {
   |                                          +++
rustc –explain E0782Result<(), Box<Error>>

rustc –explain E0782

2022/2/24 7:52:00

Trait objects must include the dyn keyword.

Erroneous code example:

trait Foo {}
fn test(arg: Box<Foo>) {} // error!

Trait objects are a way to call methods on types that are not known until runtime but conform to some trait.

Trait objects should be formed with Box<dyn Foo>, but in the code above dyn is left off.

This makes it harder to see that arg is a trait object and not a simply a heap allocated type called Foo.

To fix this issue, add dyn before the trait name.

trait Foo {}
fn test(arg: Box<dyn Foo>) {} // ok!

This used to be allowed before edition 2021, but is now an error.