Tracking issue for #![feature(maybe_uninit_slice)] (original) (raw)
This is a tracking issue for the RFC "Deprecate uninitialized in favor of a new MaybeUninit type" (rust-lang/rfcs#1892).
Most of this has been stabilized, this issue now only tracks the below unstable methods.
Public API
impl [MaybeUninit] { pub unsafe fn assume_init_drop(&mut self); pub const unsafe fn assume_init_ref(&self) -> &[T]; pub const unsafe fn assume_init_mut(&mut self) -> &mut [T];
pub const fn slice_as_ptr(this: &[MaybeUninit<T>]) -> *const T;
pub const fn slice_as_mut_ptr(this: &mut [MaybeUninit<T>]) -> *mut T;}
Steps / History
- Implementation
- Make slice methods inherent: Add inherent versions of MaybeUninit methods for slices #129259
- Ensure documentation has examples
- Final comment period (FCP)
- Stabilization PR
Unresolved Questions
- Should
slice_as_ptr/slice_as_mut_ptrbe methods (with someSelfparameter) instead of functions? slice_as_ptr/slice_as_mut_ptrget rid of the slice length, so.add(n)needs to be used on the result instead of a safer[n]. See accepted ACP Remove MaybeUninit::slice_as_(mut_)ptr and optionally add *const/*mut MaybeUninit -> *const/*mut T type safe conversions libs-team#245 and its incomplete implementation Nuke slice_as{,_mut}_ptr methods of MaybeUninit #103133