Rollup merge of #115522 - joshlf:patch-8, r=scottmcm
Clarify ManuallyDrop bit validity Clarify that `ManuallyDrop<T>` has the same bit validity as `T`.
This commit is contained in:
commit
525c661842
@ -4,12 +4,12 @@ use crate::ptr;
|
||||
/// A wrapper to inhibit compiler from automatically calling `T`’s destructor.
|
||||
/// This wrapper is 0-cost.
|
||||
///
|
||||
/// `ManuallyDrop<T>` is guaranteed to have the same layout as `T`, and is subject
|
||||
/// to the same layout optimizations as `T`. As a consequence, it has *no effect*
|
||||
/// on the assumptions that the compiler makes about its contents. For example,
|
||||
/// initializing a `ManuallyDrop<&mut T>` with [`mem::zeroed`] is undefined
|
||||
/// behavior. If you need to handle uninitialized data, use [`MaybeUninit<T>`]
|
||||
/// instead.
|
||||
/// `ManuallyDrop<T>` is guaranteed to have the same layout and bit validity as
|
||||
/// `T`, and is subject to the same layout optimizations as `T`. As a consequence,
|
||||
/// it has *no effect* on the assumptions that the compiler makes about its
|
||||
/// contents. For example, initializing a `ManuallyDrop<&mut T>` 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
|
||||
|
Loading…
x
Reference in New Issue
Block a user