//@ revisions: old new e2024 //@[e2024] edition: 2024 //@[e2024] compile-flags: -Z unstable-options #![cfg_attr(new, feature(lifetime_capture_rules_2024))] #![feature(rustc_attrs)] #![allow(internal_features)] #![rustc_variance_of_opaques] trait Captures<'a> {} impl Captures<'_> for T {} fn not_captured_early<'a: 'a>() -> impl Sized {} //[old]~^ ['a: *] //[new]~^^ ['a: *, 'a: o] //[e2024]~^^^ ['a: *, 'a: o] fn captured_early<'a: 'a>() -> impl Sized + Captures<'a> {} //~ ['a: *, 'a: o] fn not_captured_late<'a>(_: &'a ()) -> impl Sized {} //[old]~^ [] //[new]~^^ ['a: o] //[e2024]~^^^ ['a: o] fn captured_late<'a>(_: &'a ()) -> impl Sized + Captures<'a> {} //~ ['a: o] fn main() {}