summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_error_codes/src/error_codes/E0785.md
blob: 373320539ef646611ee80d7bd457c9bab5e113a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
An inherent `impl` was written on a dyn auto trait.

Erroneous code example:

```compile_fail,E0785
#![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 {}
```