Skip to content

Commit 8b13bf7

Browse files
thestingerbrson
authored andcommitted
priority_queue: replace some copies with swaps
1 parent 285496b commit 8b13bf7

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

src/libstd/priority_queue.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,9 @@ impl <T: Copy Ord> PriorityQueue<T> {
3838

3939
/// Pop the greatest item from the queue - fails if empty
4040
fn pop(&mut self) -> T {
41-
let last = self.data.pop();
42-
if self.is_not_empty() {
43-
let ret = self.data[0];
44-
self.data[0] = last;
45-
self.siftup(0);
46-
ret
47-
} else { last }
41+
let mut item = self.data.pop();
42+
if self.is_not_empty() { item <-> self.data[0]; self.siftup(0); }
43+
item
4844
}
4945

5046
/// Pop the greatest item from the queue - None if empty
@@ -70,10 +66,10 @@ impl <T: Copy Ord> PriorityQueue<T> {
7066

7167
/// Optimized version of a pop followed by a push - fails if empty
7268
fn replace(&mut self, item: T) -> T {
73-
let ret = self.data[0];
74-
self.data[0] = item;
69+
let mut item = item;
70+
item <-> self.data[0];
7571
self.siftup(0);
76-
ret
72+
item
7773
}
7874

7975
/// Consume the PriorityQueue and return the underlying vector

0 commit comments

Comments
 (0)