]> git.proxmox.com Git - rustc.git/blobdiff - src/doc/nomicon/src/destructors.md
New upstream version 1.27.1+dfsg1
[rustc.git] / src / doc / nomicon / src / destructors.md
index 6656747bed90b7597668f01332bbec23fe0f87b8..2f9e7aa522d2fbe50ad9f62000686ec1f4c0f920 100644 (file)
@@ -28,7 +28,7 @@ For instance, a custom implementation of `Box` might write `Drop` like this:
 ```rust
 #![feature(ptr_internals, allocator_api, unique)]
 
-use std::heap::{Heap, Alloc, Layout};
+use std::alloc::{Global, GlobalAlloc, Layout};
 use std::mem;
 use std::ptr::{drop_in_place, Unique};
 
@@ -38,7 +38,7 @@ impl<T> Drop for Box<T> {
     fn drop(&mut self) {
         unsafe {
             drop_in_place(self.ptr.as_ptr());
-            Heap.dealloc(self.ptr.as_ptr() as *mut u8, Layout::new::<T>())
+            Global.dealloc(self.ptr.as_ptr() as *mut _, Layout::new::<T>())
         }
     }
 }
@@ -54,7 +54,7 @@ However this wouldn't work:
 ```rust
 #![feature(allocator_api, ptr_internals, unique)]
 
-use std::heap::{Heap, Alloc, Layout};
+use std::alloc::{Global, GlobalAlloc, Layout};
 use std::ptr::{drop_in_place, Unique};
 use std::mem;
 
@@ -64,7 +64,7 @@ impl<T> Drop for Box<T> {
     fn drop(&mut self) {
         unsafe {
             drop_in_place(self.ptr.as_ptr());
-            Heap.dealloc(self.ptr.as_ptr() as *mut u8, Layout::new::<T>());
+            Global.dealloc(self.ptr.as_ptr() as *mut _, Layout::new::<T>());
         }
     }
 }
@@ -76,7 +76,7 @@ impl<T> Drop for SuperBox<T> {
         unsafe {
             // Hyper-optimized: deallocate the box's contents for it
             // without `drop`ing the contents
-            Heap.dealloc(self.my_box.ptr.as_ptr() as *mut u8, Layout::new::<T>());
+            Global.dealloc(self.my_box.ptr.as_ptr() as *mut _, Layout::new::<T>());
         }
     }
 }
@@ -125,7 +125,7 @@ of Self during `drop` is to use an Option:
 ```rust
 #![feature(allocator_api, ptr_internals, unique)]
 
-use std::heap::{Alloc, Heap, Layout};
+use std::alloc::{GlobalAlloc, Global, Layout};
 use std::ptr::{drop_in_place, Unique};
 use std::mem;
 
@@ -135,7 +135,7 @@ impl<T> Drop for Box<T> {
     fn drop(&mut self) {
         unsafe {
             drop_in_place(self.ptr.as_ptr());
-            Heap.dealloc(self.ptr.as_ptr() as *mut u8, Layout::new::<T>());
+            Global.dealloc(self.ptr.as_ptr() as *mut _, Layout::new::<T>());
         }
     }
 }
@@ -149,7 +149,7 @@ impl<T> Drop for SuperBox<T> {
             // without `drop`ing the contents. Need to set the `box`
             // field as `None` to prevent Rust from trying to Drop it.
             let my_box = self.my_box.take().unwrap();
-            Heap.dealloc(my_box.ptr.as_ptr() as *mut u8, Layout::new::<T>());
+            Global.dealloc(my_box.ptr.as_ptr() as *mut _, Layout::new::<T>());
             mem::forget(my_box);
         }
     }