From c826cef3202d88fbe938d8b7c6ac04dceb696bfb Mon Sep 17 00:00:00 2001 From: Joe Richey Date: Thu, 20 Oct 2022 14:01:10 -0700 Subject: [PATCH] Use pointer casts instead of transmute Signed-off-by: Joe Richey --- src/util.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/util.rs b/src/util.rs index c7438363..3162afad 100644 --- a/src/util.rs +++ b/src/util.rs @@ -7,7 +7,7 @@ // except according to those terms. #![allow(dead_code)] use core::{ - mem::{self, MaybeUninit}, + mem::MaybeUninit, ptr, sync::atomic::{AtomicUsize, Ordering::Relaxed}, }; @@ -73,7 +73,7 @@ impl LazyBool { #[inline(always)] pub unsafe fn slice_assume_init_mut(slice: &mut [MaybeUninit]) -> &mut [T] { // SAFETY: `MaybeUninit` is guaranteed to be layout-compatible with `T`. - mem::transmute(slice) + &mut *(slice as *mut [MaybeUninit] as *mut [T]) } #[inline] @@ -87,7 +87,7 @@ pub fn slice_as_uninit(slice: &[T]) -> &[MaybeUninit] { // SAFETY: `MaybeUninit` is guaranteed to be layout-compatible with `T`. // There is no risk of writing a `MaybeUninit` into the result since // the result isn't mutable. - unsafe { mem::transmute(slice) } + unsafe { &*(slice as *const [T] as *const [MaybeUninit]) } } /// View an mutable initialized array as potentially-uninitialized. @@ -97,5 +97,5 @@ pub fn slice_as_uninit(slice: &[T]) -> &[MaybeUninit] { #[inline(always)] pub unsafe fn slice_as_uninit_mut(slice: &mut [T]) -> &mut [MaybeUninit] { // SAFETY: `MaybeUninit` is guaranteed to be layout-compatible with `T`. - mem::transmute(slice) + &mut *(slice as *mut [T] as *mut [MaybeUninit]) }