Skip to content

Commit

Permalink
Auto merge of #86273 - JohnTitor:stabilize-maybe-uninit-ref, r=RalfJung
Browse files Browse the repository at this point in the history
Stabilize `maybe_uninit_ref`

This stabilizes `assume_init_{ref,mut}`. FCP is complete: #63568 (comment)
The renaming was done by #76047 and FIXME was resolved by #76241, so I think we can now stabilize them finally 🎉
Still, it's const-unstable as `assert_inhabited` is unstable.

Closes #63568
  • Loading branch information
bors committed Jun 14, 2021
2 parents 7510b0c + 7fa1308 commit a216131
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 14 deletions.
1 change: 0 additions & 1 deletion library/alloc/src/lib.rs
Expand Up @@ -109,7 +109,6 @@
#![feature(iter_zip)]
#![feature(lang_items)]
#![feature(layout_for_ptr)]
#![feature(maybe_uninit_ref)]
#![feature(negative_impls)]
#![feature(never_type)]
#![feature(nll)]
Expand Down
14 changes: 2 additions & 12 deletions library/core/src/mem/maybe_uninit.rs
Expand Up @@ -665,7 +665,6 @@ impl<T> MaybeUninit<T> {
/// ### Correct usage of this method:
///
/// ```rust
/// #![feature(maybe_uninit_ref)]
/// use std::mem::MaybeUninit;
///
/// let mut x = MaybeUninit::<Vec<u32>>::uninit();
Expand All @@ -683,7 +682,6 @@ impl<T> MaybeUninit<T> {
/// ### *Incorrect* usages of this method:
///
/// ```rust,no_run
/// #![feature(maybe_uninit_ref)]
/// use std::mem::MaybeUninit;
///
/// let x = MaybeUninit::<Vec<u32>>::uninit();
Expand All @@ -692,7 +690,6 @@ impl<T> MaybeUninit<T> {
/// ```
///
/// ```rust,no_run
/// #![feature(maybe_uninit_ref)]
/// use std::{cell::Cell, mem::MaybeUninit};
///
/// let b = MaybeUninit::<Cell<bool>>::uninit();
Expand All @@ -703,7 +700,7 @@ impl<T> MaybeUninit<T> {
/// // Reference to an uninitialized `Cell<bool>`: UB!
/// }
/// ```
#[unstable(feature = "maybe_uninit_ref", issue = "63568")]
#[stable(feature = "maybe_uninit_ref", since = "1.55.0")]
#[rustc_const_unstable(feature = "const_maybe_uninit_assume_init", issue = "none")]
#[inline(always)]
pub const unsafe fn assume_init_ref(&self) -> &T {
Expand Down Expand Up @@ -733,7 +730,6 @@ impl<T> MaybeUninit<T> {
/// ### Correct usage of this method:
///
/// ```rust
/// #![feature(maybe_uninit_ref)]
/// use std::mem::MaybeUninit;
///
/// # unsafe extern "C" fn initialize_buffer(buf: *mut [u8; 1024]) { *buf = [0; 1024] }
Expand Down Expand Up @@ -769,7 +765,6 @@ impl<T> MaybeUninit<T> {
/// You cannot use `.assume_init_mut()` to initialize a value:
///
/// ```rust,no_run
/// #![feature(maybe_uninit_ref)]
/// use std::mem::MaybeUninit;
///
/// let mut b = MaybeUninit::<bool>::uninit();
Expand All @@ -785,7 +780,6 @@ impl<T> MaybeUninit<T> {
/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
///
/// ```rust,no_run
/// #![feature(maybe_uninit_ref)]
/// use std::{io, mem::MaybeUninit};
///
/// fn read_chunk (reader: &'_ mut dyn io::Read) -> io::Result<[u8; 64]>
Expand All @@ -802,7 +796,6 @@ impl<T> MaybeUninit<T> {
/// Nor can you use direct field access to do field-by-field gradual initialization:
///
/// ```rust,no_run
/// #![feature(maybe_uninit_ref)]
/// use std::{mem::MaybeUninit, ptr};
///
/// struct Foo {
Expand All @@ -823,10 +816,7 @@ impl<T> MaybeUninit<T> {
/// foo.assume_init()
/// };
/// ```
// FIXME(#76092): We currently rely on the above being incorrect, i.e., we have references
// to uninitialized data (e.g., in `libcore/fmt/float.rs`). We should make
// a final decision about the rules before stabilization.
#[unstable(feature = "maybe_uninit_ref", issue = "63568")]
#[stable(feature = "maybe_uninit_ref", since = "1.55.0")]
#[rustc_const_unstable(feature = "const_maybe_uninit_assume_init", issue = "none")]
#[inline(always)]
pub const unsafe fn assume_init_mut(&mut self) -> &mut T {
Expand Down
1 change: 0 additions & 1 deletion library/std/src/lib.rs
Expand Up @@ -286,7 +286,6 @@
#![feature(log_syntax)]
#![feature(map_try_insert)]
#![feature(maybe_uninit_extra)]
#![feature(maybe_uninit_ref)]
#![feature(maybe_uninit_slice)]
#![feature(maybe_uninit_uninit_array)]
#![feature(min_specialization)]
Expand Down

0 comments on commit a216131

Please sign in to comment.