blob: e326843739638ec02b72c477d3dfac9e429f561f [file] [log] [blame] [view]
An undeclared lifetime was used.
Erroneous code example:
```compile_fail,E0261
// error, use of undeclared lifetime name `'a`
fn foo(x: &'a str) { }
struct Foo {
// error, use of undeclared lifetime name `'a`
x: &'a str,
}
```
These can be fixed by declaring lifetime parameters:
```
struct Foo<'a> {
x: &'a str,
}
fn foo<'a>(x: &'a str) {}
```
Impl blocks declare lifetime parameters separately. You need to add lifetime
parameters to an impl block if you're implementing a type that has a lifetime
parameter of its own.
For example:
```compile_fail,E0261
struct Foo<'a> {
x: &'a str,
}
// error, use of undeclared lifetime name `'a`
impl Foo<'a> {
fn foo<'a>(x: &'a str) {}
}
```
This is fixed by declaring the impl block like this:
```
struct Foo<'a> {
x: &'a str,
}
// correct
impl<'a> Foo<'a> {
fn foo(x: &'a str) {}
}
```