Error code E0495
Note: this error code is no longer emitted by the compiler.
A lifetime cannot be determined in the given situation.
Erroneous code example:
#![allow(unused)] fn main() { fn transmute_lifetime<'a, 'b, T>(t: &'a (T,)) -> &'b T { match (&t,) { // error! ((u,),) => u, } } let y = Box::new((42,)); let x = transmute_lifetime(&y); }
In this code, you have two ways to solve this issue:
- Enforce that
'a
lives at least as long as'b
. - Use the same lifetime requirement for both input and output values.
So for the first solution, you can do it by replacing 'a
with 'a: 'b
:
#![allow(unused)] fn main() { fn transmute_lifetime<'a: 'b, 'b, T>(t: &'a (T,)) -> &'b T { match (&t,) { // ok! ((u,),) => u, } } }
In the second you can do it by simply removing 'b
so they both use 'a
:
#![allow(unused)] fn main() { fn transmute_lifetime<'a, T>(t: &'a (T,)) -> &'a T { match (&t,) { // ok! ((u,),) => u, } } }