A lifetime didn't match what was expected.
Erroneous code example:
struct Foo<'a> { x: &'a isize, } fn bar<'short, 'long>(c: Foo<'short>, l: &'long isize) { let _: Foo<'long> = c; // error! }
In this example, we tried to set a value with an incompatible lifetime to another one ('long
is unrelated to 'short
). We can solve this issue in two different ways:
Either we make 'short
live at least as long as 'long
:
struct Foo<'a> { x: &'a isize, } // we set 'short to live at least as long as 'long fn bar<'short: 'long, 'long>(c: Foo<'short>, l: &'long isize) { let _: Foo<'long> = c; // ok! }
Or we use only one lifetime:
struct Foo<'a> { x: &'a isize, } fn bar<'short>(c: Foo<'short>, l: &'short isize) { let _: Foo<'short> = c; // ok! }