@@ -167,7 +167,8 @@ use crate::mem::ManuallyDrop;
167
167
///
168
168
/// // For each item in the array, drop if we allocated it.
169
169
/// for elem in &mut data[0..data_len] {
170
- /// unsafe { ptr::drop_in_place(elem.as_mut_ptr()); }
170
+ /// unsafe { ptr::drop_in_place(elem.
171
+ /// ptr()); }
171
172
/// }
172
173
/// ```
173
174
///
@@ -369,7 +370,7 @@ impl<T> MaybeUninit<T> {
369
370
pub fn write ( & mut self , val : T ) -> & mut T {
370
371
unsafe {
371
372
self . value = ManuallyDrop :: new ( val) ;
372
- self . get_mut ( )
373
+ self . assume_init_mut ( )
373
374
}
374
375
}
375
376
@@ -601,7 +602,7 @@ impl<T> MaybeUninit<T> {
601
602
/// // create a shared reference to it:
602
603
/// let x: &Vec<u32> = unsafe {
603
604
/// // Safety: `x` has been initialized.
604
- /// x.get_ref ()
605
+ /// x.assume_init_ref ()
605
606
/// };
606
607
/// assert_eq!(x, &vec![1, 2, 3]);
607
608
/// ```
@@ -613,7 +614,7 @@ impl<T> MaybeUninit<T> {
613
614
/// use std::mem::MaybeUninit;
614
615
///
615
616
/// let x = MaybeUninit::<Vec<u32>>::uninit();
616
- /// let x_vec: &Vec<u32> = unsafe { x.get_ref () };
617
+ /// let x_vec: &Vec<u32> = unsafe { x.assume_init_ref () };
617
618
/// // We have created a reference to an uninitialized vector! This is undefined behavior. ⚠️
618
619
/// ```
619
620
///
@@ -624,14 +625,14 @@ impl<T> MaybeUninit<T> {
624
625
/// let b = MaybeUninit::<Cell<bool>>::uninit();
625
626
/// // Initialize the `MaybeUninit` using `Cell::set`:
626
627
/// unsafe {
627
- /// b.get_ref ().set(true);
628
+ /// b.assume_init_ref ().set(true);
628
629
/// // ^^^^^^^^^^^
629
630
/// // Reference to an uninitialized `Cell<bool>`: UB!
630
631
/// }
631
632
/// ```
632
633
#[ unstable( feature = "maybe_uninit_ref" , issue = "63568" ) ]
633
634
#[ inline( always) ]
634
- pub unsafe fn get_ref ( & self ) -> & T {
635
+ pub unsafe fn assume_init_ref ( & self ) -> & T {
635
636
// SAFETY: the caller must guarantee that `self` is initialized.
636
637
// This also means that `self` must be a `value` variant.
637
638
unsafe {
@@ -650,7 +651,7 @@ impl<T> MaybeUninit<T> {
650
651
///
651
652
/// Calling this when the content is not yet fully initialized causes undefined
652
653
/// behavior: it is up to the caller to guarantee that the `MaybeUninit<T>` really
653
- /// is in an initialized state. For instance, `.get_mut ()` cannot be used to
654
+ /// is in an initialized state. For instance, `.assume_init_mut ()` cannot be used to
654
655
/// initialize a `MaybeUninit`.
655
656
///
656
657
/// # Examples
@@ -678,7 +679,7 @@ impl<T> MaybeUninit<T> {
678
679
/// // the `&mut MaybeUninit<[u8; 2048]>` to a `&mut [u8; 2048]`:
679
680
/// let buf: &mut [u8; 2048] = unsafe {
680
681
/// // Safety: `buf` has been initialized.
681
- /// buf.get_mut ()
682
+ /// buf.assume_init_ref ()
682
683
/// };
683
684
///
684
685
/// // Now we can use `buf` as a normal slice:
@@ -691,15 +692,15 @@ impl<T> MaybeUninit<T> {
691
692
///
692
693
/// ### *Incorrect* usages of this method:
693
694
///
694
- /// You cannot use `.get_mut ()` to initialize a value:
695
+ /// You cannot use `.assume_init_mut ()` to initialize a value:
695
696
///
696
697
/// ```rust,no_run
697
698
/// #![feature(maybe_uninit_ref)]
698
699
/// use std::mem::MaybeUninit;
699
700
///
700
701
/// let mut b = MaybeUninit::<bool>::uninit();
701
702
/// unsafe {
702
- /// *b.get_mut () = true;
703
+ /// *b.assume_init_mut () = true;
703
704
/// // We have created a (mutable) reference to an uninitialized `bool`!
704
705
/// // This is undefined behavior. ⚠️
705
706
/// }
@@ -716,7 +717,7 @@ impl<T> MaybeUninit<T> {
716
717
/// fn read_chunk (reader: &'_ mut dyn io::Read) -> io::Result<[u8; 64]>
717
718
/// {
718
719
/// let mut buffer = MaybeUninit::<[u8; 64]>::uninit();
719
- /// reader.read_exact(unsafe { buffer.get_mut () })?;
720
+ /// reader.read_exact(unsafe { buffer.assume_init_mut () })?;
720
721
/// // ^^^^^^^^^^^^^^^^
721
722
/// // (mutable) reference to uninitialized memory!
722
723
/// // This is undefined behavior.
@@ -737,23 +738,23 @@ impl<T> MaybeUninit<T> {
737
738
///
738
739
/// let foo: Foo = unsafe {
739
740
/// let mut foo = MaybeUninit::<Foo>::uninit();
740
- /// ptr::write(&mut foo.get_mut ().a as *mut u32, 1337);
741
+ /// ptr::write(&mut foo.assume_init_mut ().a as *mut u32, 1337);
741
742
/// // ^^^^^^^^^^^^^
742
743
/// // (mutable) reference to uninitialized memory!
743
744
/// // This is undefined behavior.
744
- /// ptr::write(&mut foo.get_mut ().b as *mut u8, 42);
745
+ /// ptr::write(&mut foo.assume_init_mut ().b as *mut u8, 42);
745
746
/// // ^^^^^^^^^^^^^
746
747
/// // (mutable) reference to uninitialized memory!
747
748
/// // This is undefined behavior.
748
- /// foo.assume_init ()
749
+ /// foo.assume_init_mut ()
749
750
/// };
750
751
/// ```
751
752
// FIXME(#53491): We currently rely on the above being incorrect, i.e., we have references
752
753
// to uninitialized data (e.g., in `libcore/fmt/float.rs`). We should make
753
754
// a final decision about the rules before stabilization.
754
755
#[ unstable( feature = "maybe_uninit_ref" , issue = "63568" ) ]
755
756
#[ inline( always) ]
756
- pub unsafe fn get_mut ( & mut self ) -> & mut T {
757
+ pub unsafe fn assume_init_mut ( & mut self ) -> & mut T {
757
758
// SAFETY: the caller must guarantee that `self` is initialized.
758
759
// This also means that `self` must be a `value` variant.
759
760
unsafe {
0 commit comments