From f093d374edb89aedc940468d3d789dd95cec6347 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Tue, 22 May 2012 10:54:12 -0700 Subject: rustc: Implement a new resolve pass behind a compile flag --- src/libcore/dvec.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'src/libcore/dvec.rs') 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 for dvec { } } + /* #[doc = " Append all elements of an iterable. @@ -222,6 +223,7 @@ impl extensions for dvec { v } } + */ #[doc = " Gets a copy of the current contents. @@ -267,7 +269,28 @@ impl extensions for dvec { } #[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; + } } } -- cgit 1.4.1-3-g733a5