| #![feature(iter_macro, yield_expr)] | |
| use std::iter::iter; | |
| fn main() { | |
| let i = { | |
| let s = String::new(); | |
| iter! { || { //~ ERROR `s` does not live long enough | |
| yield s.len(); | |
| for x in 5..10 { | |
| yield x * 2; | |
| } | |
| } } | |
| }; | |
| let mut i = i(); | |
| assert_eq!(i.next(), Some(0)); | |
| assert_eq!(i.next(), Some(10)); | |
| assert_eq!(i.next(), Some(12)); | |
| assert_eq!(i.next(), Some(14)); | |
| assert_eq!(i.next(), Some(16)); | |
| assert_eq!(i.next(), Some(18)); | |
| assert_eq!(i.next(), None); | |
| assert_eq!(i.next(), None); | |
| assert_eq!(i.next(), None); | |
| } |