diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2011-07-05 17:22:02 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2011-07-05 17:22:02 -0700 |
| commit | 8261d2e6fb32dd4e811d33b3ef40abde8e67ae3d (patch) | |
| tree | 0bbf6755d2a7c70b490fedc2dd211855db879158 /src/lib | |
| parent | ee5d7bbc86b63015089a4907afc4c20c1c0559c9 (diff) | |
| download | rust-8261d2e6fb32dd4e811d33b3ef40abde8e67ae3d.tar.gz rust-8261d2e6fb32dd4e811d33b3ef40abde8e67ae3d.zip | |
stdlib: Add filter_map to ivec
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/ivec.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lib/ivec.rs b/src/lib/ivec.rs index c39905b3777..14c5dda83b3 100644 --- a/src/lib/ivec.rs +++ b/src/lib/ivec.rs @@ -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; |
