2020-01-18 19:47:01 -06:00
|
|
|
// check-pass
|
|
|
|
|
2023-05-19 04:25:35 -05:00
|
|
|
#![allow(dropping_references)]
|
2023-03-29 15:18:20 -05:00
|
|
|
|
2020-01-18 19:47:01 -06:00
|
|
|
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);
|
|
|
|
}
|