Add long error explanation for E0575
This commit is contained in:
parent
7e498005a1
commit
d1db077e06
1 changed files with 53 additions and 1 deletions
|
|
@ -1735,6 +1735,59 @@ match eco {
|
|||
```
|
||||
"##,
|
||||
|
||||
E0575: r##"
|
||||
Something other than a type or an associated type was given.
|
||||
|
||||
Erroneous code example:
|
||||
|
||||
```compile_fail,E0575
|
||||
enum Rick { Morty }
|
||||
|
||||
let _: <u8 as Rick>::Morty; // error!
|
||||
|
||||
trait Age {
|
||||
type Empire;
|
||||
fn Mythology() {}
|
||||
}
|
||||
|
||||
impl Age for u8 {
|
||||
type Empire = u16;
|
||||
}
|
||||
|
||||
let _: <u8 as Age>::Mythology; // error!
|
||||
```
|
||||
|
||||
In both cases, we're declaring a variable (called `_`) and we're giving it a
|
||||
type. However, `<u8 as Rick>::Morty` and `<u8 as Age>::Mythology` aren't types,
|
||||
therefore the compiler throws an error.
|
||||
|
||||
`<u8 as Rick>::Morty` is an enum variant, you cannot use a variant as a type,
|
||||
you have to use the enum directly:
|
||||
|
||||
```
|
||||
enum Rick { Morty }
|
||||
|
||||
let _: Rick; // ok!
|
||||
```
|
||||
|
||||
`<u8 as Age>::Mythology` is a trait method, which is definitely not a type.
|
||||
However, the `Age` trait provides an associated type `Empire` which can be
|
||||
used as a type:
|
||||
|
||||
```
|
||||
trait Age {
|
||||
type Empire;
|
||||
fn Mythology() {}
|
||||
}
|
||||
|
||||
impl Age for u8 {
|
||||
type Empire = u16;
|
||||
}
|
||||
|
||||
let _: <u8 as Age>::Empire; // ok!
|
||||
```
|
||||
"##,
|
||||
|
||||
E0603: r##"
|
||||
A private item was used outside its scope.
|
||||
|
||||
|
|
@ -1862,7 +1915,6 @@ struct Foo<X = Box<Self>> {
|
|||
// E0427, merged into 530
|
||||
// E0467, removed
|
||||
// E0470, removed
|
||||
E0575,
|
||||
E0576,
|
||||
E0577,
|
||||
E0578,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue