Rollup merge of #73236 - GuillaumeGomez:cleanup-e0666, r=Dylan-DPC

Clean up E0666 explanation

r? @Dylan-DPC
This commit is contained in:
Dylan DPC 2020-06-12 12:28:29 +02:00 committed by GitHub
commit b4cb12fd21
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,21 +1,25 @@
`impl Trait` types cannot appear nested in the `impl Trait` types cannot appear nested in the generic arguments of other
generic arguments of other `impl Trait` types. `impl Trait` types.
Example of erroneous code: Erroneous code example:
```compile_fail,E0666 ```compile_fail,E0666
trait MyGenericTrait<T> {} trait MyGenericTrait<T> {}
trait MyInnerTrait {} trait MyInnerTrait {}
fn foo(bar: impl MyGenericTrait<impl MyInnerTrait>) {} fn foo(
bar: impl MyGenericTrait<impl MyInnerTrait>, // error!
) {}
``` ```
Type parameters for `impl Trait` types must be Type parameters for `impl Trait` types must be explicitly defined as named
explicitly defined as named generic parameters: generic parameters:
``` ```
trait MyGenericTrait<T> {} trait MyGenericTrait<T> {}
trait MyInnerTrait {} trait MyInnerTrait {}
fn foo<T: MyInnerTrait>(bar: impl MyGenericTrait<T>) {} fn foo<T: MyInnerTrait>(
bar: impl MyGenericTrait<T>, // ok!
) {}
``` ```