#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::iter; fn main() { let mut curr = 1; let mut pow2 = iter::repeat_with(|| { let tmp = curr; curr *= 2; tmp }) .take(4); assert_eq!(Some(1), pow2.next()); assert_eq!(Some(2), pow2.next()); assert_eq!(Some(4), pow2.next()); assert_eq!(Some(8), pow2.next()); assert_eq!(None, pow2.next()); }