From a2573290710f4b3f14be475f4ef2af773de7b4c7 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Sat, 16 Feb 2013 20:50:14 -0500 Subject: [PATCH] deque: avoid Copy for get --- src/libstd/deque.rs | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/libstd/deque.rs b/src/libstd/deque.rs index 7f8732d187f..1857d5eeaf9 100644 --- a/src/libstd/deque.rs +++ b/src/libstd/deque.rs @@ -46,6 +46,11 @@ impl Deque { fn peek_front(&self) -> &self/T { get(self.elts, self.lo) } fn peek_back(&self) -> &self/T { get(self.elts, self.hi - 1u) } + fn get(&self, i: int) -> &self/T { + let idx = (self.lo + (i as uint)) % self.elts.len(); + get(self.elts, idx) + } + fn pop_front(&mut self) -> T { let mut result = self.elts[self.lo].swap_unwrap(); self.lo = (self.lo + 1u) % self.elts.len(); @@ -89,11 +94,6 @@ impl Deque { self.hi = (self.hi + 1u) % self.elts.len(); self.nelts += 1u; } - - fn get(&self, i: int) -> T { - let idx = (self.lo + (i as uint)) % self.elts.len(); - *get(self.elts, idx) - } } /// Grow is only called on full elts, so nelts is also len(elts), unlike @@ -161,10 +161,10 @@ mod tests { log(debug, d.get(1)); log(debug, d.get(2)); log(debug, d.get(3)); - assert d.get(0) == 1; - assert d.get(1) == 2; - assert d.get(2) == 3; - assert d.get(3) == 4; + assert *d.get(0) == 1; + assert *d.get(1) == 2; + assert *d.get(2) == 3; + assert *d.get(3) == 4; } #[test] @@ -197,10 +197,10 @@ mod tests { assert deq.len() == 3; deq.add_front(a); assert deq.len() == 4; - assert deq.get(0) == a; - assert deq.get(1) == b; - assert deq.get(2) == c; - assert deq.get(3) == d; + assert *deq.get(0) == a; + assert *deq.get(1) == b; + assert *deq.get(2) == c; + assert *deq.get(3) == d; } fn test_parameterized(a: T, b: T, c: T, d: T) { @@ -227,10 +227,10 @@ mod tests { assert deq.len() == 3; deq.add_front(a); assert deq.len() == 4; - assert deq.get(0) == a; - assert deq.get(1) == b; - assert deq.get(2) == c; - assert deq.get(3) == d; + assert *deq.get(0) == a; + assert *deq.get(1) == b; + assert *deq.get(2) == c; + assert *deq.get(3) == d; } #[deriving_eq]