Proposal: `'<T>` lifetime

Yes, this is specifically intended as an alternative to that; I link to the unsafe binders HackMD in the post.

Yes, this is a limitation, but can be fixed over an edition.

Well, yes, that is the point, the lifetime can now be derived from the type, so there is now only one early-bound parameter instead of two.


Extension

We could extend this feature to allow specifying an list of types, such that the resultant lifetime is outlived by all types in the list:

fn leak<T, U>(b: Box<(T, U)>) -> &'<T, U> mut (T, U) { … }

Lifetimes could also be permitted:

fn leak<'a, T>(b: Box<(&'a i32, T)>) -> &'<'a, T> mut (&'a i32, T) { … }