Skip to content

Commit 5929f15

Browse files
committed
deque: avoid Copy in the get function
1 parent 5832fe9 commit 5929f15

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/libstd/deque.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ impl<T: Copy> Deque<T> {
7171
}
7272

7373
fn pop_front(&mut self) -> T {
74-
let t: T = get(self.elts, self.lo);
74+
let t = { *get(self.elts, self.lo) };
7575
self.elts[self.lo] = None;
7676
self.lo = (self.lo + 1u) % self.elts.len();
7777
self.nelts -= 1u;
@@ -82,19 +82,19 @@ impl<T: Copy> Deque<T> {
8282
if self.hi == 0u {
8383
self.hi = self.elts.len() - 1u;
8484
} else { self.hi -= 1u; }
85-
let t: T = get(self.elts, self.hi);
85+
let t = { *get(self.elts, self.hi) };
8686
self.elts[self.hi] = None;
8787
self.nelts -= 1u;
8888
t
8989
}
9090

91-
fn peek_front(&self) -> T { get(self.elts, self.lo) }
91+
fn peek_front(&self) -> T { *get(self.elts, self.lo) }
9292

93-
fn peek_back(&self) -> T { get(self.elts, self.hi - 1u) }
93+
fn peek_back(&self) -> T { *get(self.elts, self.hi - 1u) }
9494

9595
fn get(&self, i: int) -> T {
9696
let idx = (self.lo + (i as uint)) % self.elts.len();
97-
get(self.elts, idx)
97+
*get(self.elts, idx)
9898
}
9999
}
100100

@@ -116,8 +116,8 @@ fn grow<T: Copy>(nelts: uint, lo: uint, elts: &[Option<T>]) -> ~[Option<T>] {
116116
rv
117117
}
118118

119-
fn get<T: Copy>(elts: &[Option<T>], i: uint) -> T {
120-
match elts[i] { Some(t) => t, _ => fail!() }
119+
fn get<T>(elts: &r/[Option<T>], i: uint) -> &r/T {
120+
match elts[i] { Some(ref t) => t, _ => fail!() }
121121
}
122122

123123
#[cfg(test)]

0 commit comments

Comments
 (0)