Suggest mem::forget
if mem::ManuallyDrop::new
isn't used
I think this communicates the intent better, and is shorter anyway.
This commit is contained in:
parent
c30341ddec
commit
f3024073f9
@ -74,8 +74,12 @@ impl<T> ManuallyDrop<T> {
|
||||
///
|
||||
/// ```rust
|
||||
/// use std::mem::ManuallyDrop;
|
||||
/// ManuallyDrop::new(Box::new(()));
|
||||
/// let mut x = ManuallyDrop::new(String::from("Hello World!"));
|
||||
/// x.truncate(5); // You can still safely operate on the value
|
||||
/// assert_eq!(*x, "Hello");
|
||||
/// // But `Drop` will not be run here
|
||||
/// ```
|
||||
#[must_use = "if you don't need the wrapper, you can use `mem::forget` instead"]
|
||||
#[stable(feature = "manually_drop", since = "1.20.0")]
|
||||
#[rustc_const_stable(feature = "const_manually_drop", since = "1.36.0")]
|
||||
#[inline(always)]
|
||||
|
@ -145,7 +145,7 @@ pub use crate::intrinsics::transmute;
|
||||
#[rustc_const_stable(feature = "const_forget", since = "1.46.0")]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub const fn forget<T>(t: T) {
|
||||
ManuallyDrop::new(t);
|
||||
let _ = ManuallyDrop::new(t);
|
||||
}
|
||||
|
||||
/// Like [`forget`], but also accepts unsized values.
|
||||
|
@ -293,7 +293,7 @@ impl<T> SyncOnceCell<T> {
|
||||
|
||||
// Don't drop this `SyncOnceCell`. We just moved out one of the fields, but didn't set
|
||||
// the state to uninitialized.
|
||||
mem::ManuallyDrop::new(self);
|
||||
mem::forget(self);
|
||||
inner
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user