1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
// check-pass struct Foo<'a> { foo: &'a mut usize, } trait Bar<'a> { type FooRef<'b> where 'a: 'b; fn uwu(foo: Foo<'a>, f: impl for<'b> FnMut(Self::FooRef<'b>)); } impl<'a> Bar<'a> for () { type FooRef<'b> = &'b Foo<'a> where 'a : 'b, ; fn uwu( foo: Foo<'a>, mut f: impl for<'b> FnMut(&'b Foo<'a>), //relevant part ) { f(&foo); } } fn main() {}