]> git.lizzy.rs Git - rust.git/blobdiff - src/lib/vec.rs
Add vec::filter
[rust.git] / src / lib / vec.rs
index 6ca0c9bb61e0aaa3dfa63799678bba190996532b..fef91259b500d9f28acd887a7ff2590348215b3f 100644 (file)
@@ -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; }