-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Description
Make slice::from_raw_parts
and slice::from_raw_parts_mut
a const fn available under a feature flag.
This would require a change in the ptr
module as well, as slice module just forwards to it.
slice::from_raw_parts[mut]
is used in alot of places (e.g slice::from_ref[mut]
, which would get one step closer into constification if slice::from_raw_parts[mut]
is a const fn.
Here is a little playground to show it's possible:
https://play.rust-lang.org/?version=nightly&mode=release&edition=2018&gist=dd5c506a3e082c619f557d972e9956ff
In order to get this working, the following functions and functionalities need to be constified:
-
ptr::slice_from_raw_parts
(Make ptr::slice_from_raw_parts a const fn available under a feature flag #67462)
Implementation PR for ptr::slice_from_raw_parts
: #67462
Partially stabilized in #97522; remaining unstable functions:
// core::ptr
pub const fn slice_from_raw_parts_mut<T>(data: *mut T, len: usize) -> *mut [T];
// core::slice
pub const unsafe fn from_raw_parts_mut<'a, T>(data: *mut T, len: usize) -> &'a mut [T];
// core::ptr::NonNull
pub const fn slice_from_raw_parts(data: NonNull<T>, len: usize) -> Self