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) {} } ```