30 lines
441 B
Rust
30 lines
441 B
Rust
|
// 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() {}
|