A bit of everything for iterators (#87)

* slight changes functions that use drain

* bug in arrayvec iter

* reverse iter for arrayvec

* nth_back is stable since 1.37

* simpler drain for arrayvec

* soveu forgot to add changed files

* fmt + feature for rustc >= 1.40

* cosmetic changes

* does the ci work now?

* SHNAAAAAAAAATSEEEEEEEEL
This commit is contained in:
Soveu
2020-07-23 21:28:01 +02:00
committed by GitHub
parent c63b6f8699
commit 102439ef9d
7 changed files with 229 additions and 105 deletions
+56
View File
@@ -350,3 +350,59 @@ fn ArrayVec_splice() {
av2.splice(1..=1, Some(4));
assert_eq!(av2, array_vec![1, 4, 3]);
}
#[test]
fn iter_last_nth() {
let mut av: ArrayVec<[i32; 10]> = Default::default();
av.push(1);
av.push(2);
av.push(3);
av.push(4);
assert_eq!(av.len(), 4);
let mut iter = av.into_iter();
assert_eq!(iter.next(), Some(1));
assert_eq!(iter.next(), Some(2));
assert_eq!(iter.next(), Some(3));
assert_eq!(iter.next(), Some(4));
assert_eq!(iter.next(), None);
assert_eq!(iter.last(), None);
let mut av: ArrayVec<[i32; 10]> = Default::default();
av.push(1);
av.push(2);
av.push(3);
assert_eq!(av.into_iter().nth(0), Some(1));
}
#[test]
#[cfg(feature = "rustc_1_40")]
fn reviter() {
let mut av: ArrayVec<[i32; 10]> = Default::default();
av.push(1);
av.push(2);
av.push(3);
av.push(4);
let mut iter = av.into_iter();
assert_eq!(iter.next(), Some(1));
assert_eq!(iter.next_back(), Some(4));
assert_eq!(iter.next(), Some(2));
assert_eq!(iter.next_back(), Some(3));
assert_eq!(iter.next(), None);
assert_eq!(iter.next_back(), None);
let mut av: ArrayVec<[i32; 10]> = Default::default();
av.push(1);
av.push(2);
av.push(3);
av.push(4);
let mut iter = av.into_iter();
assert_eq!(iter.nth_back(0), Some(4));
assert_eq!(iter.nth_back(2), Some(1));
assert_eq!(iter.nth_back(0), None);
assert_eq!(iter.nth_back(99), None);
}