diff options
| author | Simon Sapin <simon.sapin@exyr.org> | 2019-07-16 09:17:35 +0200 |
|---|---|---|
| committer | Simon Sapin <simon.sapin@exyr.org> | 2019-08-16 17:11:18 +0200 |
| commit | 1141136b90663cf9d5ee6325b2f9e47f02e70746 (patch) | |
| tree | 50adf3d58f4e732b4767df192dd8315e03ca7714 /src/liballoc/sync.rs | |
| parent | dab967afdc76904c971d5ac5f5f46e31272a9827 (diff) | |
| download | rust-1141136b90663cf9d5ee6325b2f9e47f02e70746.tar.gz rust-1141136b90663cf9d5ee6325b2f9e47f02e70746.zip | |
Use ManuallyDrop instead of mem::forget
Per https://github.com/rust-lang/rust/pull/62451#discussion_r303197278
Diffstat (limited to 'src/liballoc/sync.rs')
| -rw-r--r-- | src/liballoc/sync.rs | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/liballoc/sync.rs b/src/liballoc/sync.rs index 901d2d831d1..bc3acd27e8b 100644 --- a/src/liballoc/sync.rs +++ b/src/liballoc/sync.rs @@ -479,10 +479,8 @@ impl<T> Arc<mem::MaybeUninit<T>> { #[unstable(feature = "new_uninit", issue = "0")] #[inline] pub unsafe fn assume_init(self) -> Arc<T> { - let ptr = self.ptr.cast(); - mem::forget(self); Arc { - ptr, + ptr: mem::ManuallyDrop::new(self).ptr.cast(), phantom: PhantomData, } } @@ -525,10 +523,8 @@ impl<T> Arc<[mem::MaybeUninit<T>]> { #[unstable(feature = "new_uninit", issue = "0")] #[inline] pub unsafe fn assume_init(self) -> Arc<[T]> { - let ptr = NonNull::new_unchecked(self.ptr.as_ptr() as _); - mem::forget(self); Arc { - ptr, + ptr: NonNull::new_unchecked(mem::ManuallyDrop::new(self).ptr.as_ptr() as _), phantom: PhantomData, } } |
