| //@ edition:2015..2021 | |
| fn main() { | |
| struct U; | |
| fn accept_fn_once(_: &impl FnOnce()) {} | |
| fn accept_fn_mut(_: &impl FnMut()) {} | |
| fn accept_fn(_: &impl Fn()) {} | |
| let mut tup = (U, U, U); | |
| let (ref _x0, _x1, ref mut _x2) = tup; | |
| let c1 = || { | |
| //~^ ERROR expected a closure that implements the `FnMut` | |
| //~| ERROR expected a closure that implements the `Fn` | |
| drop::<&U>(_x0); | |
| drop::<U>(_x1); | |
| drop::<&mut U>(_x2); | |
| }; | |
| accept_fn_once(&c1); | |
| accept_fn_mut(&c1); | |
| accept_fn(&c1); | |
| let c2 = || { | |
| //~^ ERROR expected a closure that implements the `Fn` | |
| drop::<&U>(_x0); | |
| drop::<&mut U>(_x2); | |
| }; | |
| accept_fn_mut(&c2); | |
| accept_fn(&c2); | |
| let c3 = || { | |
| drop::<&U>(_x0); | |
| }; | |
| accept_fn(&c3); | |
| } |