about summary refs log tree commit diff
path: root/src/libstd/deque.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd/deque.rs')
-rw-r--r--src/libstd/deque.rs16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/libstd/deque.rs b/src/libstd/deque.rs
index 4c7f2edc6b0..4eb359e48a8 100644
--- a/src/libstd/deque.rs
+++ b/src/libstd/deque.rs
@@ -63,15 +63,25 @@ pub impl<T> Deque<T> {
     }
 
     /// Iterate over the elements in the deque
+    #[cfg(stage0)]
     fn each(&self, f: &fn(&T) -> bool) {
         self.eachi(|_i, e| f(e))
     }
+    /// Iterate over the elements in the deque
+    #[cfg(not(stage0))]
+    fn each(&self, f: &fn(&T) -> bool) -> bool {
+        self.eachi(|_i, e| f(e))
+    }
 
     /// Iterate over the elements in the deque by index
+    #[cfg(stage0)]
     fn eachi(&self, f: &fn(uint, &T) -> bool) {
-        for uint::range(0, self.nelts) |i| {
-            if !f(i, self.get(i as int)) { return; }
-        }
+        uint::range(0, self.nelts, |i| f(i, self.get(i as int)))
+    }
+    /// Iterate over the elements in the deque by index
+    #[cfg(not(stage0))]
+    fn eachi(&self, f: &fn(uint, &T) -> bool) -> bool {
+        uint::range(0, self.nelts, |i| f(i, self.get(i as int)))
     }
 
     /// Remove and return the first element in the deque