From f76177ce4376ea15b1b303da347e8f653679cf88 Mon Sep 17 00:00:00 2001 From: CAD97 Date: Tue, 14 Jan 2020 16:45:11 -0500 Subject: [PATCH 1/2] Stabilize ptr::slice_from_raw_parts[_mut] --- src/liballoc/lib.rs | 1 - src/libcore/ptr/mod.rs | 11 +++++------ src/libcore/tests/lib.rs | 1 - 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs index fdabf109b2ead..38c6fa91cc55c 100644 --- a/src/liballoc/lib.rs +++ b/src/liballoc/lib.rs @@ -104,7 +104,6 @@ #![feature(ptr_offset_from)] #![feature(rustc_attrs)] #![feature(receiver_trait)] -#![feature(slice_from_raw_parts)] #![feature(specialization)] #![feature(staged_api)] #![feature(std_internals)] diff --git a/src/libcore/ptr/mod.rs b/src/libcore/ptr/mod.rs index d7b351f13458a..80f865d79e49a 100644 --- a/src/libcore/ptr/mod.rs +++ b/src/libcore/ptr/mod.rs @@ -248,17 +248,16 @@ pub(crate) struct FatPtr { /// # Examples /// /// ```rust -/// #![feature(slice_from_raw_parts)] /// use std::ptr; /// /// // create a slice pointer when starting out with a pointer to the first element -/// let mut x = [5, 6, 7]; -/// let ptr = &mut x[0] as *mut _; -/// let slice = ptr::slice_from_raw_parts_mut(ptr, 3); +/// let x = [5, 6, 7]; +/// let ptr = &x[0] as *const _; +/// let slice = ptr::slice_from_raw_parts(ptr, 3); /// assert_eq!(unsafe { &*slice }[2], 7); /// ``` #[inline] -#[unstable(feature = "slice_from_raw_parts", reason = "recently added", issue = "36925")] +#[stable(feature = "slice_from_raw_parts", since = "1.42.0")] #[rustc_const_unstable(feature = "const_slice_from_raw_parts", issue = "67456")] pub const fn slice_from_raw_parts(data: *const T, len: usize) -> *const [T] { unsafe { Repr { raw: FatPtr { data, len } }.rust } @@ -275,7 +274,7 @@ pub const fn slice_from_raw_parts(data: *const T, len: usize) -> *const [T] { /// [`slice_from_raw_parts`]: fn.slice_from_raw_parts.html /// [`from_raw_parts_mut`]: ../../std/slice/fn.from_raw_parts_mut.html #[inline] -#[unstable(feature = "slice_from_raw_parts", reason = "recently added", issue = "36925")] +#[stable(feature = "slice_from_raw_parts", since = "1.42.0")] #[rustc_const_unstable(feature = "const_slice_from_raw_parts", issue = "67456")] pub const fn slice_from_raw_parts_mut(data: *mut T, len: usize) -> *mut [T] { unsafe { Repr { raw: FatPtr { data, len } }.rust_mut } diff --git a/src/libcore/tests/lib.rs b/src/libcore/tests/lib.rs index 39f6133f2a689..6cd1f1e03278c 100644 --- a/src/libcore/tests/lib.rs +++ b/src/libcore/tests/lib.rs @@ -37,7 +37,6 @@ #![feature(iter_is_partitioned)] #![feature(iter_order_by)] #![feature(cmp_min_max_by)] -#![feature(slice_from_raw_parts)] #![feature(const_slice_from_raw_parts)] #![feature(const_raw_ptr_deref)] From 1c0d4851a6a686d09b03fab575fb0847d1e9f665 Mon Sep 17 00:00:00 2001 From: CAD97 Date: Wed, 15 Jan 2020 17:00:36 -0500 Subject: [PATCH 2/2] Fix incorrect slice->ptr conversion in slice_from_raw_parts docs --- src/libcore/ptr/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcore/ptr/mod.rs b/src/libcore/ptr/mod.rs index 80f865d79e49a..29956ae1a3646 100644 --- a/src/libcore/ptr/mod.rs +++ b/src/libcore/ptr/mod.rs @@ -252,7 +252,7 @@ pub(crate) struct FatPtr { /// /// // create a slice pointer when starting out with a pointer to the first element /// let x = [5, 6, 7]; -/// let ptr = &x[0] as *const _; +/// let ptr = x.as_ptr(); /// let slice = ptr::slice_from_raw_parts(ptr, 3); /// assert_eq!(unsafe { &*slice }[2], 7); /// ```