#[derive(Default, Debug, Clone)] struct Test { vector: Vec, } fn main() { const N: usize = 10; const DEFAULT: Test = Test { vector: vec![] }; let mut array: [Test; N] = [DEFAULT; N]; for x in &mut array { for i in 1..100 { x.vector.push(i); } } let array_ptr = array.as_mut_ptr(); for i in (1..N).rev() { unsafe { array_ptr.add(i).write(array_ptr.add(i - 1).read()); } } // unsafe { array_ptr.write(Default::default()); } array[0] = Default::default(); println!("{:?}", array); }