## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# 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 {}
    }