@@ -79,7 +79,7 @@ use ops::{CoerceUnsized, DispatchFromDyn};
79
79
use fmt;
80
80
use hash;
81
81
use marker:: { PhantomData , Unsize } ;
82
- use mem;
82
+ use mem:: { self , MaybeUninit } ;
83
83
use nonzero:: NonZero ;
84
84
85
85
use cmp:: Ordering :: { self , Less , Equal , Greater } ;
@@ -575,9 +575,9 @@ pub unsafe fn replace<T>(dst: *mut T, mut src: T) -> T {
575
575
#[ inline]
576
576
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
577
577
pub unsafe fn read < T > ( src : * const T ) -> T {
578
- let mut tmp: T = mem :: uninitialized ( ) ;
579
- copy_nonoverlapping ( src, & mut tmp, 1 ) ;
580
- tmp
578
+ let mut tmp = MaybeUninit :: < T > :: uninitialized ( ) ;
579
+ copy_nonoverlapping ( src, tmp. as_mut_ptr ( ) , 1 ) ;
580
+ tmp. into_inner ( )
581
581
}
582
582
583
583
/// Reads the value from `src` without moving it. This leaves the
@@ -642,11 +642,11 @@ pub unsafe fn read<T>(src: *const T) -> T {
642
642
#[ inline]
643
643
#[ stable( feature = "ptr_unaligned" , since = "1.17.0" ) ]
644
644
pub unsafe fn read_unaligned < T > ( src : * const T ) -> T {
645
- let mut tmp: T = mem :: uninitialized ( ) ;
645
+ let mut tmp = MaybeUninit :: < T > :: uninitialized ( ) ;
646
646
copy_nonoverlapping ( src as * const u8 ,
647
- & mut tmp as * mut T as * mut u8 ,
647
+ tmp. as_mut_ptr ( ) as * mut u8 ,
648
648
mem:: size_of :: < T > ( ) ) ;
649
- tmp
649
+ tmp. into_inner ( )
650
650
}
651
651
652
652
/// Overwrites a memory location with the given value without reading or
0 commit comments