2 #![feature(generators, generator_trait)]
4 use std::marker::Unpin;
5 use std::ops::Generator;
6 use std::ops::GeneratorState::Yielded;
9 pub struct GenIter<G>(G);
11 impl <G> Iterator for GenIter<G>
17 fn next(&mut self) -> Option<Self::Item> {
18 match Pin::new(&mut self.0).resume() {
19 Yielded(y) => Some(y),
25 fn bug<'a>() -> impl Iterator<Item = &'a str> {
27 let mut s = String::new();
28 yield &s[..] //~ ERROR cannot yield value referencing local variable `s` [E0515]
29 //~| ERROR borrow may still be in use when generator yields