Error code E0782
Trait objects must include the dyn
keyword.
Erroneous code example:
#![allow(unused)] fn main() { 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.
#![allow(unused)] fn main() { trait Foo {} fn test(arg: Box<dyn Foo>) {} // ok! }
This used to be allowed before edition 2021, but is now an error.