diff options
| author | bors <bors@rust-lang.org> | 2017-08-28 16:36:03 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-08-28 16:36:03 +0000 |
| commit | 9a59d693239915aa37bd08ca194a8ba2857db25a (patch) | |
| tree | f0852037daee472f22814b2206285fee3733703d /src/liballoc | |
| parent | 5caca6fa0213cadca1584db43dd71fb5f82b41b9 (diff) | |
| parent | a996d5eec70ba6733e23f2e56e762f58e60bb4ff (diff) | |
| download | rust-9a59d693239915aa37bd08ca194a8ba2857db25a.tar.gz rust-9a59d693239915aa37bd08ca194a8ba2857db25a.zip | |
Auto merge of #43076 - Zoxc:gen, r=arielb1
Generator support This adds experimental support for generators intended to land once https://github.com/rust-lang/rfcs/pull/2033 is approved. This is not yet ready to be merged. Things to do: - [x] Make closure arguments on generators an error - [x] Spot FIXMEs - [x] Pass make tidy - [x] Write tests - [x] Document the current syntax and semantics for generators somewhere - [x] Use proper error message numbers - [x] ~~Make the implicit argument type default to `()`~~
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/boxed.rs | 13 | ||||
| -rw-r--r-- | src/liballoc/lib.rs | 1 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/liballoc/boxed.rs b/src/liballoc/boxed.rs index 82aac4dbf63..d9f4a2217db 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, GeneratorState}; 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 = "43122")] +impl<T> Generator for Box<T> + where T: Generator + ?Sized +{ + type Yield = T::Yield; + type Return = T::Return; + fn resume(&mut self) -> GeneratorState<Self::Yield, Self::Return> { + (**self).resume() + } +} diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs index 2d41ed64810..d959331eb55 100644 --- a/src/liballoc/lib.rs +++ b/src/liballoc/lib.rs @@ -80,6 +80,7 @@ #![cfg_attr(not(test), feature(core_float))] #![cfg_attr(not(test), feature(exact_size_is_empty))] #![cfg_attr(not(test), feature(slice_rotate))] +#![cfg_attr(not(test), feature(generator_trait))] #![cfg_attr(test, feature(rand, test))] #![feature(allow_internal_unstable)] #![feature(box_patterns)] |
