Rust errors / Types and traits
Rust compiler error · checked with rustc 1.99.0
Rust error E0785: cannot define inherent `impl` for a dyn auto trait
What it meansAn inherent impl was written on a dyn auto trait.
What rustc prints
error[E0785]: cannot define inherent `impl` for a dyn auto trait --> main.rs:5:1 | 5 | impl dyn AutoTrait {} | ^^^^^^^^^^^^^^^^^^ impl requires at least one non-auto trait | = note: define and implement a new trait or type instead
Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
An inherent impl was written on a dyn auto trait.
Erroneous code example:
#![feature(auto_traits)]
auto trait AutoTrait {}
impl dyn AutoTrait {}
Dyn objects allow any number of auto traits, plus at most one non-auto trait. The non-auto trait becomes the "principal trait".
When checking if an impl on a dyn trait is coherent, the principal trait is normally the only one considered. Since the erroneous code has no principal trait, it cannot be implemented at all.
Working example:
#![feature(auto_traits)]
trait PrincipalTrait {}
auto trait AutoTrait {}
impl dyn PrincipalTrait + AutoTrait + Send {}From rustc --explain E0785 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0308mismatched types
- E0277the trait bound is not satisfied
- E0599no method named X found in the current scope
- E0433failed to resolve
- E0777expected path to a trait, found literal
- E0782expected a type, found a trait
- E0790cannot call associated function on trait without specifying the corresponding `impl` type
- E0791invalid type for variable with `#[linkage]` attribute
Up next
Often hit nextE0308: mismatched typesA related error from the same family.Read it next →Did this answer your question?