| // This test exercises lending behavior for iterator closures which is not yet supported. |
| |
| #![feature(iter_macro, yield_expr)] |
| |
| use std::iter::iter; |
| |
| fn main() { |
| let f = { |
| let s = "foo".to_string(); |
| iter! { move || { |
| for c in s.chars() { |
| yield c; |
| } |
| }} |
| }; |
| let mut i = f(); |
| assert_eq!(i.next(), Some('f')); |
| assert_eq!(i.next(), Some('o')); |
| assert_eq!(i.next(), Some('o')); |
| assert_eq!(i.next(), None); |
| let mut i = f(); //~ ERROR use of moved value: `f` |
| assert_eq!(i.next(), Some('f')); |
| assert_eq!(i.next(), Some('o')); |
| assert_eq!(i.next(), Some('o')); |
| assert_eq!(i.next(), None); |
| } |