6 let mut it = xs.iter();
8 assert_eq!(it.len(), 3);
9 assert_eq!(it.nth(2), Some(&2));
10 assert_eq!(it.len(), 0);
11 assert_eq!(it.nth(2), None);
12 assert_eq!(it.len(), 0);
20 assert_eq!(it.len(), 3);
21 assert_eq!(it.last(), Some(&2));
25 fn test_fuse_count() {
29 assert_eq!(it.len(), 3);
30 assert_eq!(it.count(), 3);
31 // Can't check len now because count consumes.
37 let it = xs.iter(); // `FusedIterator`
38 let i = it.fuse().fold(0, |i, &x| {
42 assert_eq!(i, xs.len());
44 let it = xs.iter(); // `FusedIterator`
45 let i = it.fuse().rfold(xs.len(), |i, &x| {
46 assert_eq!(x, xs[i - 1]);
51 let it = xs.iter().scan((), |_, &x| Some(x)); // `!FusedIterator`
52 let i = it.fuse().fold(0, |i, x| {
56 assert_eq!(i, xs.len());
62 assert_eq!(it.len(), 3);
63 assert_eq!(it.next(), Some(0));
64 assert_eq!(it.len(), 2);
65 assert_eq!(it.next(), Some(1));
66 assert_eq!(it.len(), 1);
67 assert_eq!(it.next(), Some(2));
68 assert_eq!(it.len(), 0);
69 assert_eq!(it.next(), None);
70 assert_eq!(it.len(), 0);
71 assert_eq!(it.next(), None);
72 assert_eq!(it.len(), 0);
73 assert_eq!(it.next(), None);
74 assert_eq!(it.len(), 0);