diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-07-24 18:00:39 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-24 18:00:39 +0200 |
| commit | 34abb9647c58650fd6554dff91c3332e06ee9ace (patch) | |
| tree | 123cab0a642e390490a574450c8ff7add5727597 /library/std/src/thread/mod.rs | |
| parent | ce523d65e01849c648efce8c7cd2d69a6a237d21 (diff) | |
| parent | f6fe7e49a2bc2ad14513aa609b67e188470309f6 (diff) | |
| download | rust-34abb9647c58650fd6554dff91c3332e06ee9ace.tar.gz rust-34abb9647c58650fd6554dff91c3332e06ee9ace.zip | |
Rollup merge of #127733 - GrigorenkoPV:don't-forget, r=Amanieu
Replace some `mem::forget`'s with `ManuallyDrop`
> but I would like to see a larger effort to replace all uses of `mem::forget`.
_Originally posted by `@saethlin` in https://github.com/rust-lang/rust/issues/127584#issuecomment-2226087767_
So,
r? `@saethlin`
Sorry, I have finished writing all of this before I got your response.
Diffstat (limited to 'library/std/src/thread/mod.rs')
| -rw-r--r-- | library/std/src/thread/mod.rs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/library/std/src/thread/mod.rs b/library/std/src/thread/mod.rs index e9731bc85d6..9a082183440 100644 --- a/library/std/src/thread/mod.rs +++ b/library/std/src/thread/mod.rs @@ -165,7 +165,7 @@ use crate::ffi::CStr; use crate::fmt; use crate::io; use crate::marker::PhantomData; -use crate::mem::{self, forget}; +use crate::mem::{self, forget, ManuallyDrop}; use crate::num::NonZero; use crate::panic; use crate::panicking; @@ -510,11 +510,10 @@ impl Builder { MaybeDangling(mem::MaybeUninit::new(x)) } fn into_inner(self) -> T { - // SAFETY: we are always initialized. - let ret = unsafe { self.0.assume_init_read() }; // Make sure we don't drop. - mem::forget(self); - ret + let this = ManuallyDrop::new(self); + // SAFETY: we are always initialized. + unsafe { this.0.assume_init_read() } } } impl<T> Drop for MaybeDangling<T> { |
