fn main() { let xs=[1_i64,4,9,16]; fn each_pair(xs: &[T], mut f: impl FnMut(T, T)) { for pair in xs.windows(2) { f(pair[0], pair[1]); } } let mut gaps: Vec = Vec::new(); each_pair(&xs, |a, b| gaps.push(b - a)); assert_eq!(gaps,[3,5,7]);each_pair(&[] as &[i64],|_,_|panic!());each_pair(&[1_i64],|_,_|panic!()); }