# Proposal: \`'\<T\>\` lifetime

**URL:** <https://internals.rust-lang.org/t/proposal-t-lifetime/22977>\
**Category:** language design\
**Created:** [May 23, 2025, 6:20pm UTC](https://internals.rust-lang.org/t/proposal-t-lifetime/22977 "2025-05-23T18:20:29Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![Jules-Bertholet](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/jules-bertholet/32/10671_2.png) [@Jules-Bertholet](https://internals.rust-lang.org/u/Jules-Bertholet)\
**Post date:** [May 23, 2025, 9:30pm UTC](https://internals.rust-lang.org/t/proposal-t-lifetime/22977/3 "2025-05-23T21:30:42Z")

</div>

> [@CAD97](#):
>
> This is better handled by [unsafe binder types](https://github.com/rust-lang/rust/issues/130516), e.g. `element: unsafe<'a> &'a T`.

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

> [@CAD97](#):
>
> Well, not _quite_, since the function already exists and can be referred to with the parameter explicitly provided.

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

> [@CAD97](#):
>
> Not _quite_; a function like `fn f<T>() -> T` with an output generic type can still get an effectively early-bound lifetime by using `'<T>`.

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:

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

```

Lifetimes could also be permitted:

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

```

---

_[View the full topic](https://internals.rust-lang.org/t/proposal-t-lifetime/22977)._
