#![allow(dead_code, deprecated, unused_variables, unused_mut)] fn main() { let a = [1, 2, 3, 4]; let mut iter = a .into_iter() .scan( 1, |state, x| { *state = *state * x; if *state > 6 { return None; } Some(-*state) }, ); assert_eq!(iter.next(), Some(- 1)); assert_eq!(iter.next(), Some(- 2)); assert_eq!(iter.next(), Some(- 6)); assert_eq!(iter.next(), None); }