//@ check-pass | |
#![allow(dropping_references)] | |
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 = || { | |
drop::<&U>(_x0); | |
drop::<U>(_x1); | |
drop::<&mut U>(_x2); | |
}; | |
accept_fn_once(c1); | |
let c2 = || { | |
drop::<&U>(_x0); | |
drop::<&mut U>(_x2); | |
}; | |
accept_fn_mut(c2); | |
let c3 = || { | |
drop::<&U>(_x0); | |
}; | |
accept_fn(c3); | |
} |