File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 77// except according to those terms.
88#![ allow( dead_code) ]
99use core:: {
10- mem:: { self , MaybeUninit } ,
10+ mem:: MaybeUninit ,
1111 ptr,
1212 sync:: atomic:: { AtomicUsize , Ordering :: Relaxed } ,
1313} ;
@@ -73,7 +73,7 @@ impl LazyBool {
7373#[ inline( always) ]
7474pub unsafe fn slice_assume_init_mut < T > ( slice : & mut [ MaybeUninit < T > ] ) -> & mut [ T ] {
7575 // SAFETY: `MaybeUninit<T>` is guaranteed to be layout-compatible with `T`.
76- mem :: transmute ( slice)
76+ & mut * ( slice as * mut [ MaybeUninit < T > ] as * mut [ T ] )
7777}
7878
7979#[ inline]
@@ -87,7 +87,7 @@ pub fn slice_as_uninit<T>(slice: &[T]) -> &[MaybeUninit<T>] {
8787 // SAFETY: `MaybeUninit<T>` is guaranteed to be layout-compatible with `T`.
8888 // There is no risk of writing a `MaybeUninit<T>` into the result since
8989 // the result isn't mutable.
90- unsafe { mem :: transmute ( slice) }
90+ unsafe { & * ( slice as * const [ T ] as * const [ MaybeUninit < T > ] ) }
9191}
9292
9393/// View an mutable initialized array as potentially-uninitialized.
@@ -97,5 +97,5 @@ pub fn slice_as_uninit<T>(slice: &[T]) -> &[MaybeUninit<T>] {
9797#[ inline( always) ]
9898pub unsafe fn slice_as_uninit_mut < T > ( slice : & mut [ T ] ) -> & mut [ MaybeUninit < T > ] {
9999 // SAFETY: `MaybeUninit<T>` is guaranteed to be layout-compatible with `T`.
100- mem :: transmute ( slice)
100+ & mut * ( slice as * mut [ T ] as * mut [ MaybeUninit < T > ] )
101101}
You can’t perform that action at this time.
0 commit comments