#![feature(rustc_attrs)] #![rustc_variance_of_opaques] trait Bar<'a> { type Assoc: From<()>; } fn foo<'a, T: Bar<'a>>() -> impl Into { //~^ ERROR ['a: o, T: o] // captures both T and 'a invariantly () } fn foo2<'a, T: Bar<'a>>() -> impl Into + 'a { //~^ ERROR ['a: o, T: o, 'a: o] // captures both T and 'a invariantly, and also duplicates `'a` // i.e. the opaque looks like `impl Into<>::Assoc> + 'a_duplicated` () } fn main() {}