#![allow(unused_variables)] #![feature(allocator_api, box_vec_non_null)] fn main() { use std::alloc::System; use std::ptr::NonNull; use std::mem; let mut v = Vec::with_capacity_in(3, System); v.push(1); v.push(2); v.push(3); let mut v = mem::ManuallyDrop::new(v); let p = unsafe { NonNull::new_unchecked(v.as_mut_ptr()) }; let len = v.len(); let cap = v.capacity(); let alloc = v.allocator(); unsafe { for i in 0..len { p.add(i).write(4 + i); } let rebuilt = Vec::from_parts_in(p, len, cap, alloc.clone()); assert_eq!(rebuilt, [4, 5, 6]); } }