W3cubDocs

/Rust

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.

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/error_codes/E0782.html