about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTim Diekmann <tim.diekmann@3dvision.de>2020-08-06 11:45:54 +0200
committerTim Diekmann <tim.diekmann@3dvision.de>2020-08-06 11:45:54 +0200
commita784729cde2f558bba91984eadf0f152b8a9d288 (patch)
tree3a323c649b200bf9ac4bf85f4424fd103f449bc7
parent52b179b4b51e3d1bbc5d687f8680c38321678830 (diff)
downloadrust-a784729cde2f558bba91984eadf0f152b8a9d288.tar.gz
rust-a784729cde2f558bba91984eadf0f152b8a9d288.zip
Add `as_mut_ptr` to `NonNull<[T]>`
-rw-r--r--library/core/src/ptr/non_null.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/library/core/src/ptr/non_null.rs b/library/core/src/ptr/non_null.rs
index 9f843a57099..5163b2d9d56 100644
--- a/library/core/src/ptr/non_null.rs
+++ b/library/core/src/ptr/non_null.rs
@@ -224,6 +224,24 @@ impl<T> NonNull<[T]> {
         unsafe { NonNull::new_unchecked(self.as_ptr().as_mut_ptr()) }
     }
 
+    /// Returns a raw pointer to the slice's buffer.
+    ///
+    /// # Examples
+    ///
+    /// ```rust
+    /// #![feature(slice_ptr_get, nonnull_slice_from_raw_parts)]
+    /// use std::ptr::NonNull;
+    ///
+    /// let slice: NonNull<[i8]> = NonNull::slice_from_raw_parts(NonNull::dangling(), 3);
+    /// assert_eq!(slice.as_mut_ptr(), 1 as *mut i8);
+    /// ```
+    #[inline]
+    #[unstable(feature = "slice_ptr_get", issue = "74265")]
+    #[rustc_const_unstable(feature = "slice_ptr_get", issue = "74265")]
+    pub const fn as_mut_ptr(self) -> *mut T {
+        self.as_non_null_ptr().as_ptr()
+    }
+
     /// Returns a raw pointer to an element or subslice, without doing bounds
     /// checking.
     ///