Skip to content

Commit fbe2321

Browse files
authored
Rollup merge of rust-lang#92768 - ojeda:stabilize-maybe_uninit_extra, r=Mark-Simulacrum
Partially stabilize `maybe_uninit_extra` This covers: ```rust impl<T> MaybeUninit<T> { pub unsafe fn assume_init_read(&self) -> T { ... } pub unsafe fn assume_init_drop(&mut self) { ... } } ``` It does not cover the const-ness of `write` under `const_maybe_uninit_write` nor the const-ness of `assume_init_read` (this commit adds `const_maybe_uninit_assume_init_read` for that). FCP: rust-lang#63567 (comment). Signed-off-by: Miguel Ojeda <[email protected]>
2 parents 773860a + 8680a44 commit fbe2321

File tree

4 files changed

+5
-9
lines changed

4 files changed

+5
-9
lines changed

library/alloc/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@
119119
#![feature(inplace_iteration)]
120120
#![feature(iter_advance_by)]
121121
#![feature(layout_for_ptr)]
122-
#![feature(maybe_uninit_extra)]
123122
#![feature(maybe_uninit_slice)]
124123
#![cfg_attr(test, feature(new_uninit))]
125124
#![feature(nonnull_slice_from_raw_parts)]

library/core/src/mem/maybe_uninit.rs

+4-6
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ impl<T> MaybeUninit<T> {
330330
/// # Examples
331331
///
332332
/// ```no_run
333-
/// #![feature(maybe_uninit_uninit_array, maybe_uninit_extra, maybe_uninit_slice)]
333+
/// #![feature(maybe_uninit_uninit_array, maybe_uninit_slice)]
334334
///
335335
/// use std::mem::MaybeUninit;
336336
///
@@ -662,7 +662,6 @@ impl<T> MaybeUninit<T> {
662662
/// Correct usage of this method:
663663
///
664664
/// ```rust
665-
/// #![feature(maybe_uninit_extra)]
666665
/// use std::mem::MaybeUninit;
667666
///
668667
/// let mut x = MaybeUninit::<u32>::uninit();
@@ -683,7 +682,6 @@ impl<T> MaybeUninit<T> {
683682
/// *Incorrect* usage of this method:
684683
///
685684
/// ```rust,no_run
686-
/// #![feature(maybe_uninit_extra)]
687685
/// use std::mem::MaybeUninit;
688686
///
689687
/// let mut x = MaybeUninit::<Option<Vec<u32>>>::uninit();
@@ -693,8 +691,8 @@ impl<T> MaybeUninit<T> {
693691
/// // We now created two copies of the same vector, leading to a double-free ⚠️ when
694692
/// // they both get dropped!
695693
/// ```
696-
#[unstable(feature = "maybe_uninit_extra", issue = "63567")]
697-
#[rustc_const_unstable(feature = "maybe_uninit_extra", issue = "63567")]
694+
#[stable(feature = "maybe_uninit_extra", since = "1.60.0")]
695+
#[rustc_const_unstable(feature = "const_maybe_uninit_assume_init_read", issue = "63567")]
698696
#[inline(always)]
699697
#[track_caller]
700698
pub const unsafe fn assume_init_read(&self) -> T {
@@ -728,7 +726,7 @@ impl<T> MaybeUninit<T> {
728726
///
729727
/// [`assume_init`]: MaybeUninit::assume_init
730728
/// [`Vec<T>`]: ../../std/vec/struct.Vec.html
731-
#[unstable(feature = "maybe_uninit_extra", issue = "63567")]
729+
#[stable(feature = "maybe_uninit_extra", since = "1.60.0")]
732730
pub unsafe fn assume_init_drop(&mut self) {
733731
// SAFETY: the caller must guarantee that `self` is initialized and
734732
// satisfies all invariants of `T`.

library/core/tests/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#![feature(const_convert)]
1616
#![feature(const_maybe_uninit_as_mut_ptr)]
1717
#![feature(const_maybe_uninit_assume_init)]
18+
#![feature(const_maybe_uninit_assume_init_read)]
1819
#![feature(const_num_from_num)]
1920
#![feature(const_ptr_read)]
2021
#![feature(const_ptr_write)]
@@ -46,7 +47,6 @@
4647
#![feature(slice_take)]
4748
#![feature(maybe_uninit_uninit_array)]
4849
#![feature(maybe_uninit_array_assume_init)]
49-
#![feature(maybe_uninit_extra)]
5050
#![feature(maybe_uninit_write_slice)]
5151
#![feature(min_specialization)]
5252
#![feature(numfmt)]

library/std/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,6 @@
297297
#![feature(llvm_asm)]
298298
#![feature(log_syntax)]
299299
#![feature(map_try_insert)]
300-
#![feature(maybe_uninit_extra)]
301300
#![feature(maybe_uninit_slice)]
302301
#![feature(maybe_uninit_uninit_array)]
303302
#![feature(maybe_uninit_write_slice)]

0 commit comments

Comments
 (0)