about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
authorJesse Ruderman <jruderman@gmail.com>2011-09-23 19:10:48 -0700
committerJesse Ruderman <jruderman@gmail.com>2011-09-23 19:10:48 -0700
commit3a7a2943ddd1e7e91f625d6459c3e0636ca129cb (patch)
treef4cff64a6706ebe22e8da9b23d3f6c0244ab6a58 /src/lib
parent7979bbbf5132104ca3359919f7c515e3a9d8dcd6 (diff)
downloadrust-3a7a2943ddd1e7e91f625d6459c3e0636ca129cb.tar.gz
rust-3a7a2943ddd1e7e91f625d6459c3e0636ca129cb.zip
Add vec::filter
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/vec.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/lib/vec.rs b/src/lib/vec.rs
index 6ca0c9bb61e..fef91259b50 100644
--- a/src/lib/vec.rs
+++ b/src/lib/vec.rs
@@ -213,6 +213,17 @@ fn filter_map<@T, @U>(f: block(T) -> option::t<U>, v: [mutable? T]) -> [U] {
     ret result;
 }
 
+fn filter<@T>(f: block(T) -> bool, v: [mutable? T]) -> [T] {
+    let result = [];
+    for elem: T in v {
+        let elem2 = elem; // satisfies alias checker
+        if f(elem2) {
+            result += [elem2];
+        }
+    }
+    ret result;
+}
+
 fn foldl<@T, @U>(p: block(U, T) -> U, z: U, v: [mutable? T]) -> U {
     let sz = len(v);
     if sz == 0u { ret z; }