summary refs log tree commit diff
path: root/src/liballoc
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-07-05 15:02:30 -0700
committerJohn Kåre Alsaker <john.kare.alsaker@gmail.com>2017-07-28 15:46:23 +0200
commit81030176dd36ad1efc0149ff8d57626bf42006d1 (patch)
treeb51560fdf57645a29316d47e04987eb1ac8ecd19 /src/liballoc
parent17c749f3eee953e204462870e68b64712a5c3576 (diff)
downloadrust-81030176dd36ad1efc0149ff8d57626bf42006d1.tar.gz
rust-81030176dd36ad1efc0149ff8d57626bf42006d1.zip
std: Add forwarding impls of `Generator` trait
Diffstat (limited to 'src/liballoc')
-rw-r--r--src/liballoc/boxed.rs13
-rw-r--r--src/liballoc/lib.rs1
2 files changed, 13 insertions, 1 deletions
diff --git a/src/liballoc/boxed.rs b/src/liballoc/boxed.rs
index 6318d22059f..079a525f951 100644
--- a/src/liballoc/boxed.rs
+++ b/src/liballoc/boxed.rs
@@ -66,7 +66,7 @@ use core::hash::{self, Hash};
 use core::iter::FusedIterator;
 use core::marker::{self, Unsize};
 use core::mem;
-use core::ops::{CoerceUnsized, Deref, DerefMut};
+use core::ops::{CoerceUnsized, Deref, DerefMut, Generator, State};
 use core::ops::{BoxPlace, Boxed, InPlace, Place, Placer};
 use core::ptr::{self, Unique};
 use core::convert::From;
@@ -784,3 +784,14 @@ impl<T: ?Sized> AsMut<T> for Box<T> {
         &mut **self
     }
 }
+
+#[unstable(feature = "generator_trait", issue = "0")]
+impl<T, U> Generator<U> for Box<T>
+    where T: Generator<U> + ?Sized
+{
+    type Yield = T::Yield;
+    type Return = T::Return;
+    fn resume(&mut self, arg: U) -> State<Self::Yield, Self::Return> {
+        (**self).resume(arg)
+    }
+}
diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs
index 227fcfabcf1..1252be447c3 100644
--- a/src/liballoc/lib.rs
+++ b/src/liballoc/lib.rs
@@ -97,6 +97,7 @@
 #![feature(fundamental)]
 #![feature(fused)]
 #![feature(generic_param_attrs)]
+#![feature(generator_trait)]
 #![feature(i128_type)]
 #![feature(inclusive_range)]
 #![feature(lang_items)]