rust/tests/run-pass/iter.rs
2019-02-09 13:08:23 +01:00

41 lines
909 B
Rust

fn iter_empty_and_zst() {
for _ in Vec::<u32>::new().iter() { // this iterates over a Unique::empty()
panic!("We should never be here.");
}
// Iterate over a ZST (uses arith_offset internally)
let mut count = 0;
for _ in &[(), (), ()] {
count += 1;
}
assert_eq!(count, 3);
}
fn test_iterator_step_by_nth() {
let mut it = (0..16).step_by(5);
assert_eq!(it.nth(0), Some(0));
assert_eq!(it.nth(0), Some(5));
assert_eq!(it.nth(0), Some(10));
assert_eq!(it.nth(0), Some(15));
assert_eq!(it.nth(0), None);
}
fn iter_any() {
let f = |x: &u8| { 10u8 == *x };
f(&1u8);
let g = |(), x: &u8| { 10u8 == *x };
g((), &1u8);
let h = |(), (), x: &u8| { 10u8 == *x };
h((), (), &1u8);
[1, 2, 3u8].into_iter().any(|elt| 10 == *elt);
}
fn main() {
test_iterator_step_by_nth();
iter_any();
iter_empty_and_zst();
}