//@ 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::(_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); }