//@ run-pass #![feature(iter_macro, yield_expr)] // This test creates an iterator that captures a reference and ensure that doesn't force the // iterator to become lending. use std::iter::iter; fn main() { let s = "foo".to_string(); let f = iter! { || { for c in s.chars() { yield c; } }}; let mut i = f(); let mut j = f(); assert_eq!(i.next(), Some('f')); assert_eq!(i.next(), Some('o')); assert_eq!(i.next(), Some('o')); assert_eq!(i.next(), None); assert_eq!(j.next(), Some('f')); assert_eq!(j.next(), Some('o')); assert_eq!(j.next(), Some('o')); assert_eq!(j.next(), None); }