blob: fff92c30b3751e52c2749a3c211f7a6f367f27ab (
plain)
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
|
trait Foo {}
impl<F> Foo for F where F: Fn(&i32) -> &i32 {}
fn take_foo(_: impl Foo) {}
fn main() {
take_foo(|a| a);
//~^ ERROR implementation of `FnOnce` is not general enough
//~| ERROR mismatched types
take_foo(|a: &i32| a);
//~^ ERROR lifetime may not live long enough
//~| ERROR mismatched types
take_foo(|a: &i32| -> &i32 { a });
//~^ ERROR lifetime may not live long enough
//~| ERROR mismatched types
// OK
take_foo(identity(|a| a));
take_foo(identity(|a: &i32| a));
take_foo(identity(|a: &i32| -> &i32 { a }));
fn identity<F>(t: F) -> F
where
F: Fn(&i32) -> &i32,
{
t
}
}
|