A lifetime cannot be determined in the given situation.
Erroneous code example:
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);RunIn this code, you have two ways to solve this issue:
'a lives at least as long as 'b.So for the first solution, you can do it by replacing 'a with 'a: 'b:
fn transmute_lifetime<'a: 'b, 'b, T>(t: &'a (T,)) -> &'b T {
match (&t,) { // ok!
((u,),) => u,
}
}RunIn the second you can do it by simply removing 'b so they both use 'a:
fn transmute_lifetime<'a, T>(t: &'a (T,)) -> &'a T {
match (&t,) { // ok!
((u,),) => u,
}
}Run