about summary refs log tree commit diff
path: root/src/libcore/dvec.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcore/dvec.rs')
-rw-r--r--src/libcore/dvec.rs25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/libcore/dvec.rs b/src/libcore/dvec.rs
index ea67947073e..f753fa739ae 100644
--- a/src/libcore/dvec.rs
+++ b/src/libcore/dvec.rs
@@ -200,6 +200,7 @@ impl extensions<A:copy> for dvec<A> {
         }
     }
 
+    /*
     #[doc = "
         Append all elements of an iterable.
 
@@ -222,6 +223,7 @@ impl extensions<A:copy> for dvec<A> {
            v
         }
     }
+    */
 
     #[doc = "
         Gets a copy of the current contents.
@@ -267,7 +269,28 @@ impl extensions<A:copy> for dvec<A> {
     }
 
     #[doc = "Returns the last element, failing if the vector is empty"]
+    #[inline(always)]
     fn last() -> A {
-        self.get_elt(self.len() - 1u)
+        self.check_not_borrowed();
+
+        let length = self.len();
+        if length == 0u {
+            fail "attempt to retrieve the last element of an empty vector";
+        }
+
+        ret self.data[length - 1u];
+    }
+
+    #[doc="Iterates over the elements in reverse order"]
+    #[inline(always)]
+    fn reach(f: fn(A) -> bool) {
+        let length = self.len();
+        let mut i = 0u;
+        while i < length {
+            if !f(self.get_elt(i)) {
+                break;
+            }
+            i += 1u;
+        }
     }
 }