1 #![feature(ptr_internals)]
11 let b = Box::new(4i32);
12 let r = Box::into_raw(b);
15 let r2 = ((r as usize) + 0) as *mut i32;
18 // Use original ptr again
20 drop(Box::from_raw(r));
26 let b = Box::new(4i32);
27 let u = Box::into_unique(b).0;
30 let r = ((u.as_ptr() as usize) + 0) as *mut i32;
33 // Use original ptr again.
34 drop(Box::from_raw(u.as_ptr()));
38 fn boxed_pair_to_vec() {
48 fn reinterstruct(box_pair: Box<PairFoo>) -> Vec<Foo> {
49 let ref_pair = Box::leak(box_pair) as *mut PairFoo;
50 let ptr_foo = unsafe { std::ptr::addr_of_mut!((*ref_pair).fst) };
51 unsafe { Vec::from_raw_parts(ptr_foo, 2, 2) }
54 let pair_foo = Box::new(PairFoo { fst: Foo(42), snd: Foo(1337) });
55 println!("pair_foo = {:?}", pair_foo);
56 for (n, foo) in reinterstruct(pair_foo).into_iter().enumerate() {
57 println!("foo #{} = {:?}", n, foo);