about summary refs log tree commit diff
path: root/src/liballoc
diff options
context:
space:
mode:
authorNiv Kaminer <nivkner@zoho.com>2018-08-10 10:10:35 +0300
committerNiv Kaminer <nivkner@zoho.com>2018-08-23 01:37:03 +0300
commitc4ec0cd36927a4a010dc6789bdd88eaa503dadd6 (patch)
treeb18454b26ae921de0eb35416797c9625a1e6c4e3 /src/liballoc
parent30bb4af5d8191f016a82c75a0c2b4700b23bd724 (diff)
downloadrust-c4ec0cd36927a4a010dc6789bdd88eaa503dadd6.tar.gz
rust-c4ec0cd36927a4a010dc6789bdd88eaa503dadd6.zip
attempt to work around Box<T> not being recognized as local type
Diffstat (limited to 'src/liballoc')
-rw-r--r--src/liballoc/boxed.rs8
-rw-r--r--src/liballoc/pin.rs7
2 files changed, 8 insertions, 7 deletions
diff --git a/src/liballoc/boxed.rs b/src/liballoc/boxed.rs
index b5c2fd7526d..c25f3eb8f17 100644
--- a/src/liballoc/boxed.rs
+++ b/src/liballoc/boxed.rs
@@ -71,6 +71,7 @@ use core::ptr::{self, NonNull, Unique};
 use core::task::{Context, Poll, Spawn, SpawnErrorKind, SpawnObjError};
 
 use raw_vec::RawVec;
+use pin::PinBox;
 use str::from_boxed_utf8_unchecked;
 
 /// A pointer type for heap allocation.
@@ -816,3 +817,10 @@ impl<'a, F: Future<Output = ()> + 'a> From<Box<F>> for LocalFutureObj<'a, ()> {
         LocalFutureObj::new(boxed)
     }
 }
+
+#[unstable(feature = "pin", issue = "49150")]
+impl<T: Unpin + ?Sized> From<PinBox<T>> for Box<T> {
+    fn from(pinned: PinBox<T>) -> Box<T> {
+        unsafe { PinBox::unpin(pinned) }
+    }
+}
diff --git a/src/liballoc/pin.rs b/src/liballoc/pin.rs
index 1b6ccae456a..bacc13fa74a 100644
--- a/src/liballoc/pin.rs
+++ b/src/liballoc/pin.rs
@@ -134,13 +134,6 @@ impl<T: ?Sized> From<Box<T>> for PinBox<T> {
 }
 
 #[unstable(feature = "pin", issue = "49150")]
-impl<T: Unpin + ?Sized> From<PinBox<T>> for Box<T> {
-    fn from(pinned: PinBox<T>) -> Box<T> {
-        pinned.inner
-    }
-}
-
-#[unstable(feature = "pin", issue = "49150")]
 impl<T: ?Sized> Deref for PinBox<T> {
     type Target = T;