Extend E0106, E0261

Added an example that points out hardly obvious mistake one could make when writing impl for a new type.
This commit is contained in:
purple-ice 2019-01-03 20:15:01 +02:00 committed by GitHub
parent 2442823ef5
commit c738e6042d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -362,6 +362,10 @@ struct Foo1 { x: &bool }
// ^ expected lifetime parameter
struct Foo2<'a> { x: &'a bool } // correct
impl Foo2 { ... }
// ^ expected lifetime parameter
impl<'a> Foo2<'a> { ... } // correct
struct Bar1 { x: Foo2 }
// ^^^^ expected lifetime parameter
struct Bar2<'a> { x: Foo2<'a> } // correct
@ -772,6 +776,24 @@ struct Foo<'a> {
x: &'a str,
}
```
Implementations need their own lifetime declarations:
```
// error, undeclared lifetime
impl Foo<'a> {
...
}
```
Which are declared like this:
```
// correct
impl<'a> Foo<'a> {
...
}
```
"##,
E0262: r##"