about summary refs log tree commit diff
path: root/src/lib/vec.rs
diff options
context:
space:
mode:
authorPaul Stansifer <paul.stansifer@gmail.com>2011-06-20 17:26:17 -0700
committerGraydon Hoare <graydon@mozilla.com>2011-06-28 15:02:12 +0000
commitc3901cdf8e1723dc07b5bfa202fe31b573d44561 (patch)
tree76ce9e746aee876d0dd7e2e8290f12bc434b9f49 /src/lib/vec.rs
parentb6326817803079ed33b13b87429ef7d77ce5f4cb (diff)
downloadrust-c3901cdf8e1723dc07b5bfa202fe31b573d44561.tar.gz
rust-c3901cdf8e1723dc07b5bfa202fe31b573d44561.zip
Add simple syntax extension (#simplext)
Diffstat (limited to 'src/lib/vec.rs')
-rw-r--r--src/lib/vec.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lib/vec.rs b/src/lib/vec.rs
index 3be6c1ef9ad..db57953a962 100644
--- a/src/lib/vec.rs
+++ b/src/lib/vec.rs
@@ -228,6 +228,24 @@ fn find[T](fn(&T) -> bool  f, &vec[T] v) -> option::t[T] {
     ret none[T];
 }
 
+fn position[T](&T x, &array[T] v) -> option::t[uint] {
+    let uint i = 0u;
+    while (i < len(v)) {
+        if (x == v.(i)) { ret some[uint](i); }
+        i += 1u;
+    }
+    ret none[uint];
+}
+
+fn position_pred[T](fn (&T) -> bool f, &vec[T] v) -> option::t[uint] {
+    let uint i = 0u;
+    while (i < len(v)) {
+        if (f(v.(i))) { ret some[uint](i); }
+        i += 1u;
+    }
+    ret none[uint];
+}
+
 fn member[T](&T x, &array[T] v) -> bool {
     for (T elt in v) { if (x == elt) { ret true; } }
     ret false;