1 // run-pass 2 pairwise_sub(mut t: Box<dyn DoubleEndedIterator<Item=isize>>) -> isize3fn pairwise_sub(mut t: Box<dyn DoubleEndedIterator<Item=isize>>) -> isize { 4 let mut result = 0; 5 loop { 6 let front = t.next(); 7 let back = t.next_back(); 8 match (front, back) { 9 (Some(f), Some(b)) => { result += b - f; } 10 _ => { return result; } 11 } 12 } 13 } 14 main()15fn main() { 16 let v = vec![1, 2, 3, 4, 5, 6]; 17 let r = pairwise_sub(Box::new(v.into_iter())); 18 assert_eq!(r, 9); 19 } 20