1 #![feature(ptr_internals)]
9 fn into_raw() { unsafe {
10 let b = Box::new(4i32);
11 let r = Box::into_raw(b);
14 let r2 = ((r as usize)+0) as *mut i32;
17 // Use original ptr again
19 drop(Box::from_raw(r));
22 fn into_unique() { unsafe {
23 let b = Box::new(4i32);
24 let u = Box::into_unique(b).0;
27 let r = ((u.as_ptr() as usize)+0) as *mut i32;
30 // Use original ptr again.
31 drop(Box::from_raw(u.as_ptr()));
34 fn boxed_pair_to_vec() {
44 fn reinterstruct(box_pair: Box<PairFoo>) -> Vec<Foo> {
45 let ref_pair = Box::leak(box_pair) as *mut PairFoo;
46 let ptr_foo = unsafe { &mut (*ref_pair).fst as *mut Foo };
48 Vec::from_raw_parts(ptr_foo, 2, 2)
52 let pair_foo = Box::new(PairFoo {
56 println!("pair_foo = {:?}", pair_foo);
57 for (n, foo) in reinterstruct(pair_foo).into_iter().enumerate() {
58 println!("foo #{} = {:?}", n, foo);