Add std::vec::iter

This commit is contained in:
Brian Anderson 2011-10-27 20:29:13 -07:00
parent 9c097d19e4
commit b5ed1c46c0
2 changed files with 26 additions and 1 deletions

View File

@ -655,12 +655,23 @@ fn eachi<T>(f: block(T, uint) -> (), v: [mutable? T]) {
}
}
/*
Function: iter
Iterates over a vector
Iterates over vector `v` and, for each element, calls function `f`
*/
fn iter<T>(v: [mutable? T], it: block(T)) {
iter2(v) { |_i, v| it(v) }
}
/*
Function: iter2
FIXME: This is exactly the same as eachi
*/
fn iter2<T>(v: [T], it: block(uint, T)) {
fn iter2<T>(v: [mutable? T], it: block(uint, T)) {
let i = 0u;
for x in v { it(i, x); i += 1u; }
}

View File

@ -292,6 +292,20 @@ fn test_foldl() {
assert (sum == 15u);
}
#[test]
fn iter_empty() {
let i = 0;
vec::iter::<int>([], { |_v| i += 1 });
assert i == 0;
}
#[test]
fn iter_nonempty() {
let i = 0;
vec::iter([1, 2, 3], { |v| i += v });
assert i == 6;
}
#[test]
fn test_any_and_all() {
assert (vec::any(is_three, [1u, 2u, 3u]));