Skip to content

Commit a257329

Browse files
committed
deque: avoid Copy for get
1 parent 6190661 commit a257329

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

src/libstd/deque.rs

+17-17
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ impl<T> Deque<T> {
4646
fn peek_front(&self) -> &self/T { get(self.elts, self.lo) }
4747
fn peek_back(&self) -> &self/T { get(self.elts, self.hi - 1u) }
4848

49+
fn get(&self, i: int) -> &self/T {
50+
let idx = (self.lo + (i as uint)) % self.elts.len();
51+
get(self.elts, idx)
52+
}
53+
4954
fn pop_front(&mut self) -> T {
5055
let mut result = self.elts[self.lo].swap_unwrap();
5156
self.lo = (self.lo + 1u) % self.elts.len();
@@ -89,11 +94,6 @@ impl<T: Copy> Deque<T> {
8994
self.hi = (self.hi + 1u) % self.elts.len();
9095
self.nelts += 1u;
9196
}
92-
93-
fn get(&self, i: int) -> T {
94-
let idx = (self.lo + (i as uint)) % self.elts.len();
95-
*get(self.elts, idx)
96-
}
9797
}
9898

9999
/// Grow is only called on full elts, so nelts is also len(elts), unlike
@@ -161,10 +161,10 @@ mod tests {
161161
log(debug, d.get(1));
162162
log(debug, d.get(2));
163163
log(debug, d.get(3));
164-
assert d.get(0) == 1;
165-
assert d.get(1) == 2;
166-
assert d.get(2) == 3;
167-
assert d.get(3) == 4;
164+
assert *d.get(0) == 1;
165+
assert *d.get(1) == 2;
166+
assert *d.get(2) == 3;
167+
assert *d.get(3) == 4;
168168
}
169169

170170
#[test]
@@ -197,10 +197,10 @@ mod tests {
197197
assert deq.len() == 3;
198198
deq.add_front(a);
199199
assert deq.len() == 4;
200-
assert deq.get(0) == a;
201-
assert deq.get(1) == b;
202-
assert deq.get(2) == c;
203-
assert deq.get(3) == d;
200+
assert *deq.get(0) == a;
201+
assert *deq.get(1) == b;
202+
assert *deq.get(2) == c;
203+
assert *deq.get(3) == d;
204204
}
205205

206206
fn test_parameterized<T: Copy Eq Durable>(a: T, b: T, c: T, d: T) {
@@ -227,10 +227,10 @@ mod tests {
227227
assert deq.len() == 3;
228228
deq.add_front(a);
229229
assert deq.len() == 4;
230-
assert deq.get(0) == a;
231-
assert deq.get(1) == b;
232-
assert deq.get(2) == c;
233-
assert deq.get(3) == d;
230+
assert *deq.get(0) == a;
231+
assert *deq.get(1) == b;
232+
assert *deq.get(2) == c;
233+
assert *deq.get(3) == d;
234234
}
235235

236236
#[deriving_eq]

0 commit comments

Comments
 (0)