| /// Creates a new closure that returns an iterator where each iteration steps the given | |
| /// generator to the next `yield` statement. | |
| /// | |
| /// Similar to [`iter::from_fn`], but allows arbitrary control flow. | |
| /// | |
| /// [`iter::from_fn`]: crate::iter::from_fn | |
| /// | |
| /// # Examples | |
| /// | |
| /// ``` | |
| /// #![feature(iter_macro, coroutines)] | |
| /// | |
| /// let it = std::iter::iter!{|| { | |
| /// yield 1; | |
| /// yield 2; | |
| /// yield 3; | |
| /// } }(); | |
| /// let v: Vec<_> = it.collect(); | |
| /// assert_eq!(v, [1, 2, 3]); | |
| /// ``` | |
| #[unstable(feature = "iter_macro", issue = "142269", reason = "generators are unstable")] | |
| #[allow_internal_unstable(coroutines, iter_from_coroutine)] | |
| #[rustc_builtin_macro] | |
| pub macro iter($($t:tt)*) { | |
| /* compiler-builtin */ | |
| } |