1 // run-pass
2 
pairwise_sub(mut t: Box<dyn DoubleEndedIterator<Item=isize>>) -> isize3 fn 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()15 fn 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