diff options
| author | Ralf Jung <post@ralfj.de> | 2019-07-03 20:13:42 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2019-07-03 20:14:59 +0200 |
| commit | 6225607e67d9934bcb8ddd0ab74abe4ea974f178 (patch) | |
| tree | 5d18095ef7f8bc2c53aa1ac7dd6f109039af5e7f /src | |
| parent | 8c6fb028ca887dff9ec2fe0a90398b6d5bf5fb45 (diff) | |
| download | rust-6225607e67d9934bcb8ddd0ab74abe4ea974f178.tar.gz rust-6225607e67d9934bcb8ddd0ab74abe4ea974f178.zip | |
remove bogus example from drop_in_place
Diffstat (limited to 'src')
| -rw-r--r-- | src/libcore/ptr/mod.rs | 32 |
1 files changed, 5 insertions, 27 deletions
diff --git a/src/libcore/ptr/mod.rs b/src/libcore/ptr/mod.rs index fccb00d768c..da781d7e9fe 100644 --- a/src/libcore/ptr/mod.rs +++ b/src/libcore/ptr/mod.rs @@ -100,7 +100,11 @@ pub use unique::Unique; /// as the compiler doesn't need to prove that it's sound to elide the /// copy. /// +/// Unaligned values cannot be dropped in place, they must be copied to an aligned +/// location first using [`ptr::read_unaligned`]. +/// /// [`ptr::read`]: ../ptr/fn.read.html +/// [`ptr::read_unaligned`]: ../ptr/fn.read_unaligned.html /// /// # Safety /// @@ -108,8 +112,7 @@ pub use unique::Unique; /// /// * `to_drop` must be [valid] for reads. /// -/// * `to_drop` must be properly aligned. See the example below for how to drop -/// an unaligned pointer. +/// * `to_drop` must be properly aligned. /// /// Additionally, if `T` is not [`Copy`], using the pointed-to value after /// calling `drop_in_place` can cause undefined behavior. Note that `*to_drop = @@ -153,31 +156,6 @@ pub use unique::Unique; /// assert!(weak.upgrade().is_none()); /// ``` /// -/// Unaligned values cannot be dropped in place, they must be copied to an aligned -/// location first: -/// ``` -/// use std::ptr; -/// use std::mem::{self, MaybeUninit}; -/// -/// unsafe fn drop_after_copy<T>(to_drop: *mut T) { -/// let mut copy: MaybeUninit<T> = MaybeUninit::uninit(); -/// ptr::copy(to_drop, copy.as_mut_ptr(), 1); -/// drop(copy.assume_init()); -/// } -/// -/// #[repr(packed, C)] -/// struct Packed { -/// _padding: u8, -/// unaligned: Vec<i32>, -/// } -/// -/// let mut p = Packed { _padding: 0, unaligned: vec![42] }; -/// unsafe { -/// drop_after_copy(&mut p.unaligned as *mut _); -/// mem::forget(p); -/// } -/// ``` -/// /// Notice that the compiler performs this copy automatically when dropping packed structs, /// i.e., you do not usually have to worry about such issues unless you call `drop_in_place` /// manually. |
