Skip to content

Commit 5908497

Browse files
committed
---
yaml --- r: 5994 b: refs/heads/master c: b5ed1c4 h: refs/heads/master v: v3
1 parent f95e275 commit 5908497

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 9c097d19e4408653e7e0c008f69af835d053b8a0
2+
refs/heads/master: b5ed1c46c0407c6a6c3354d1c8da8531d992064c

trunk/src/lib/vec.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,12 +655,23 @@ fn eachi<T>(f: block(T, uint) -> (), v: [mutable? T]) {
655655
}
656656
}
657657

658+
/*
659+
Function: iter
660+
661+
Iterates over a vector
662+
663+
Iterates over vector `v` and, for each element, calls function `f`
664+
*/
665+
fn iter<T>(v: [mutable? T], it: block(T)) {
666+
iter2(v) { |_i, v| it(v) }
667+
}
668+
658669
/*
659670
Function: iter2
660671
661672
FIXME: This is exactly the same as eachi
662673
*/
663-
fn iter2<T>(v: [T], it: block(uint, T)) {
674+
fn iter2<T>(v: [mutable? T], it: block(uint, T)) {
664675
let i = 0u;
665676
for x in v { it(i, x); i += 1u; }
666677
}

trunk/src/test/stdtest/vec.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,20 @@ fn test_foldl() {
292292
assert (sum == 15u);
293293
}
294294

295+
#[test]
296+
fn iter_empty() {
297+
let i = 0;
298+
vec::iter::<int>([], { |_v| i += 1 });
299+
assert i == 0;
300+
}
301+
302+
#[test]
303+
fn iter_nonempty() {
304+
let i = 0;
305+
vec::iter([1, 2, 3], { |v| i += v });
306+
assert i == 6;
307+
}
308+
295309
#[test]
296310
fn test_any_and_all() {
297311
assert (vec::any(is_three, [1u, 2u, 3u]));

0 commit comments

Comments
 (0)