diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2013-02-16 20:50:14 -0500 |
|---|---|---|
| committer | Daniel Micay <danielmicay@gmail.com> | 2013-02-16 20:51:04 -0500 |
| commit | a2573290710f4b3f14be475f4ef2af773de7b4c7 (patch) | |
| tree | 6b3b72d6bf9961578b5ba0cf19d67e139a17ebb3 /src/libstd | |
| parent | 6190661018b7a62613b7f02d2bc1c1d31cd2470d (diff) | |
| download | rust-a2573290710f4b3f14be475f4ef2af773de7b4c7.tar.gz rust-a2573290710f4b3f14be475f4ef2af773de7b4c7.zip | |
deque: avoid Copy for get
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/deque.rs | 34 |
1 files 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<T> Deque<T> { 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<T: Copy> Deque<T> { 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<T: Copy Eq Durable>(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] |
