diff options
| author | Ralf Jung <post@ralfj.de> | 2020-05-16 11:14:00 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2020-05-16 19:50:09 +0200 |
| commit | 993c4480ac0ad6233068b02f1f4c1d4096111cbe (patch) | |
| tree | 5b71f6de618dc32d9e7ab429a7a3c084dbb91924 | |
| parent | 6163394e1ff98c53abc9d27f68b5608faa8cd9b6 (diff) | |
| download | rust-993c4480ac0ad6233068b02f1f4c1d4096111cbe.tar.gz rust-993c4480ac0ad6233068b02f1f4c1d4096111cbe.zip | |
emphasize that ManuallyDrop is safe-to-access and unsafe-to-drop
| -rw-r--r-- | src/libcore/mem/manually_drop.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/libcore/mem/manually_drop.rs b/src/libcore/mem/manually_drop.rs index 17863dd38af..18767c482c7 100644 --- a/src/libcore/mem/manually_drop.rs +++ b/src/libcore/mem/manually_drop.rs @@ -2,7 +2,6 @@ use crate::ops::{Deref, DerefMut}; use crate::ptr; /// A wrapper to inhibit compiler from automatically calling `T`’s destructor. -/// /// This wrapper is 0-cost. /// /// `ManuallyDrop<T>` is subject to the same layout optimizations as `T`. @@ -11,6 +10,11 @@ use crate::ptr; /// with [`mem::zeroed`] is undefined behavior. /// If you need to handle uninitialized data, use [`MaybeUninit<T>`] instead. /// +/// Note that accessing the value inside a `ManuallyDrop<T>` is safe. +/// This means that a `ManuallyDrop<T>` whose content has been dropped must not +/// be exposed through a public safe API. +/// Correspondingly, `ManuallyDrop::drop` is unsafe. +/// /// # Examples /// /// This wrapper can be used to enforce a particular drop order on fields, regardless |
