Error code E0785
An inherent impl
was written on a dyn auto trait.
Erroneous code example:
#![allow(unused)] #![feature(auto_traits)] fn main() { 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:
#![allow(unused)] #![feature(auto_traits)] fn main() { trait PrincipalTrait {} auto trait AutoTrait {} impl dyn PrincipalTrait + AutoTrait + Send {} }