about summary refs log tree commit diff
path: root/src/libcore/ptr
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2019-07-06 17:19:58 +0200
committerSimon Sapin <simon.sapin@exyr.org>2019-08-16 17:11:18 +0200
commit7b02b9f8ec2850ac687ee5c7d869a626e09d22cb (patch)
tree3c5a4f49589032d666c3b87aeca4a72bd392688c /src/libcore/ptr
parent1613fdae37df044f2c254d25d356b3a57eb61a50 (diff)
downloadrust-7b02b9f8ec2850ac687ee5c7d869a626e09d22cb.tar.gz
rust-7b02b9f8ec2850ac687ee5c7d869a626e09d22cb.zip
Add new_uninit and assume_init on Box, Rc, and Arc
Diffstat (limited to 'src/libcore/ptr')
-rw-r--r--src/libcore/ptr/unique.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libcore/ptr/unique.rs b/src/libcore/ptr/unique.rs
index f0d011fe6b2..a739f3b6022 100644
--- a/src/libcore/ptr/unique.rs
+++ b/src/libcore/ptr/unique.rs
@@ -122,6 +122,14 @@ impl<T: ?Sized> Unique<T> {
     pub unsafe fn as_mut(&mut self) -> &mut T {
         &mut *self.as_ptr()
     }
+
+    /// Cast to a pointer of another type
+    #[inline]
+    pub const fn cast<U>(self) -> Unique<U> {
+        unsafe {
+            Unique::new_unchecked(self.as_ptr() as *mut U)
+        }
+    }
 }
 
 #[unstable(feature = "ptr_internals", issue = "0")]