3 impl<F> Foo for F where F: Fn(&i32) -> &i32 {}
5 fn take_foo(_: impl Foo) {}
8 take_foo(|a| a); //~ ERROR mismatched types
9 take_foo(|a: &i32| a); //~ ERROR mismatched types
10 take_foo(|a: &i32| -> &i32 { a }); //~ ERROR mismatched types
13 take_foo(identity(|a| a));
14 take_foo(identity(|a: &i32| a));
15 take_foo(identity(|a: &i32| -> &i32 { a }));
17 fn identity<F>(t: F) -> F