// check-pass #![allow(dropping_references)] fn main() {} struct U; fn slice() { let mut arr = [U, U, U, U, U, U, U, U]; let [ref _x0, _x1, _, mut _x3, .., ref _x6, _x7] = arr; _x3 = U; let [ref mut _x0, _, ref _x2, _, _x4, ref mut _x5, _x6, _] = arr; *_x5 = U; let [_, _, _x2, _, _, _x5, _, _] = arr; *_x0 = U; let [ref _x0, ..] = arr; let [_x0, ..] = arr; } fn tuple() { let mut tup = (U, U, U, U, U); let (ref _x0, mut _x1, ref _x2, ..) = tup; _x1 = U; let (ref mut _x0, _, _, ref _x3, _x4) = tup; let (_, _, _, _x3, _) = tup; *_x0 = U; drop(_x2); drop(tup.2); let (_x0, _, _, ..) = tup; }