Error code E0261
An undeclared lifetime was used.
Erroneous code example:
#![allow(unused)]
fn main() {
// 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:
#![allow(unused)]
fn main() {
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:
#![allow(unused)]
fn main() {
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:
#![allow(unused)]
fn main() {
struct Foo<'a> {
x: &'a str,
}
// correct
impl<'a> Foo<'a> {
fn foo(x: &'a str) {}
}
}