diff options
| author | Gary Guo <gary@garyguo.net> | 2026-09-09 23:23:20 +0100 |
|---|---|---|
| committer | Gary Guo <gary@garyguo.net> | 2026-10-11 11:06:47 +0100 |
| commit | 73cf61724648ad57dd5664a0e2915e20fd304650 (patch) | |
| tree | 22a04e0f5b4150e79f28c7a679b592592458d40e /tools/perf/scripts/python/task-analyzer.py | |
| parent | e2ab80587d02ef262df78a48660eef06adeb133b (diff) | |
rust: pin-init: internal: pin_data: support existential lifetimes
There are many cases where structs that have interior mutability, but they
do not need the invariance over captured lifetimes as the lifetime is
captured upon construction, and new data of that particular lifetime does
not flow back into the struct.
For these use cases, the same mechanism as pin-init self-reference may be
used. Add support for existential lifetimes, introduced by having where
clauses such as
exists<'a>: 'b
The lifetime `'a` above is minted similar to field lifetimes. Because `'a`
is an erased lifetime living longer than `'b`, the only variance
requirement that we have is that `'b` cannot be contravariant; that defense
is fulfilled by adding `PhantomData<&'b ()>` so the struct is either
covariant or invariant over `'b`.
Acked-by: Benno Lossin <lossin@kernel.org>
Link: https://patch.msgid.link/20261008-dev-selfref-v2-20-e280b3c8fba5@garyguo.net/
Signed-off-by: Gary Guo <gary@garyguo.net>
Diffstat (limited to 'tools/perf/scripts/python/task-analyzer.py')
0 files changed, 0 insertions, 0 deletions
