stdlib: Add filter_map to ivec

This commit is contained in:
Patrick Walton
2011-07-05 17:22:02 -07:00
parent ee5d7bbc86
commit 8261d2e6fb
2 changed files with 35 additions and 0 deletions

View File

@@ -171,6 +171,18 @@ fn map[T,U](fn(&T)->U f, &T[mutable?] v) -> U[] {
ret result;
}
fn filter_map[T,U](fn(&T)->option::t[U] f, &T[mutable?] v) -> U[] {
auto result = ~[];
for (T elem in v) {
auto elem2 = elem; // satisfies alias checker
alt (f(elem2)) {
case (none) { /* no-op */ }
case (some(?result_elem)) { result += ~[result_elem]; }
}
}
ret result;
}
fn any[T](fn(&T)->bool f, &T[] v) -> bool {
for (T elem in v) { if (f(elem)) { ret true; } }
ret false;