diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2017-07-05 15:02:30 -0700 |
|---|---|---|
| committer | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2017-07-28 15:46:23 +0200 |
| commit | 81030176dd36ad1efc0149ff8d57626bf42006d1 (patch) | |
| tree | b51560fdf57645a29316d47e04987eb1ac8ecd19 /src/libcore/ops | |
| parent | 17c749f3eee953e204462870e68b64712a5c3576 (diff) | |
| download | rust-81030176dd36ad1efc0149ff8d57626bf42006d1.tar.gz rust-81030176dd36ad1efc0149ff8d57626bf42006d1.zip | |
std: Add forwarding impls of `Generator` trait
Diffstat (limited to 'src/libcore/ops')
| -rw-r--r-- | src/libcore/ops/generator.rs | 17 | ||||
| -rw-r--r-- | src/libcore/ops/mod.rs | 6 |
2 files changed, 14 insertions, 9 deletions
diff --git a/src/libcore/ops/generator.rs b/src/libcore/ops/generator.rs index 2a88c842a8f..1e54eaaaa28 100644 --- a/src/libcore/ops/generator.rs +++ b/src/libcore/ops/generator.rs @@ -10,8 +10,7 @@ /// The result of a generator resumption. #[derive(Debug)] -#[cfg(not(stage0))] -#[lang = "generator_state"] +#[cfg_attr(not(stage0), lang = "generator_state")] #[unstable(feature = "generator_trait", issue = "0")] pub enum State<Y, R> { /// The generator suspended with a value. @@ -22,8 +21,7 @@ pub enum State<Y, R> { } /// The trait implemented by builtin generator types. -#[cfg(not(stage0))] -#[lang = "generator"] +#[cfg_attr(not(stage0), lang = "generator")] #[unstable(feature = "generator_trait", issue = "0")] #[fundamental] pub trait Generator<Arg = ()> { @@ -36,3 +34,14 @@ pub trait Generator<Arg = ()> { /// This resumes the execution of the generator. fn resume(&mut self, arg: Arg) -> State<Self::Yield, Self::Return>; } + +#[unstable(feature = "generator_trait", issue = "0")] +impl<'a, T, U> Generator<U> for &'a mut 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/libcore/ops/mod.rs b/src/libcore/ops/mod.rs index 36b0a3c8a34..a51b1911028 100644 --- a/src/libcore/ops/mod.rs +++ b/src/libcore/ops/mod.rs @@ -191,11 +191,7 @@ pub use self::range::{RangeInclusive, RangeToInclusive}; pub use self::try::Try; #[unstable(feature = "generator_trait", issue = "0")] -#[cfg(not(stage0))] -pub use self::generator::State; -#[unstable(feature = "generator_trait", issue = "0")] -#[cfg(not(stage0))] -pub use self::generator::Generator; +pub use self::generator::{Generator, State}; #[unstable(feature = "placement_new_protocol", issue = "27779")] pub use self::place::{Place, Placer, InPlace, Boxed, BoxPlace}; |
