## 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 E0666

`impl Trait` types cannot appear nested in the generic arguments of other `impl Trait` types.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    trait MyGenericTrait<T> {}
    trait MyInnerTrait {}

    fn foo(
        bar: impl MyGenericTrait<impl MyInnerTrait>, // error!
    ) {}
    }

Type parameters for `impl Trait` types must be explicitly defined as named generic parameters:

    #![allow(unused)]
    fn main() {
    trait MyGenericTrait<T> {}
    trait MyInnerTrait {}

    fn foo<T: MyInnerTrait>(
        bar: impl MyGenericTrait<T>, // ok!
    ) {}
    }