Skip to content

Commit 3a6849f

Browse files
committed
Revert "Revert "Merge pull request #4633 from thestinger/treemap""
This reverts commit d73077f.
1 parent ab0b7b2 commit 3a6849f

File tree

2 files changed

+10
-19
lines changed

2 files changed

+10
-19
lines changed

src/libstd/priority_queue.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ impl <T: Ord> PriorityQueue<T> {
7676
}
7777

7878
/// Optimized version of a push followed by a pop
79-
fn push_pop(&mut self, item: T) -> T {
80-
let mut item = item;
79+
fn push_pop(&mut self, mut item: T) -> T {
8180
if !self.is_empty() && self.data[0] > item {
8281
item <-> self.data[0];
8382
self.siftdown(0);
@@ -86,8 +85,7 @@ impl <T: Ord> PriorityQueue<T> {
8685
}
8786

8887
/// Optimized version of a pop followed by a push - fails if empty
89-
fn replace(&mut self, item: T) -> T {
90-
let mut item = item;
88+
fn replace(&mut self, mut item: T) -> T {
9189
item <-> self.data[0];
9290
self.siftdown(0);
9391
item
@@ -129,9 +127,8 @@ impl <T: Ord> PriorityQueue<T> {
129127
// vector over the junk element. This reduces the constant factor
130128
// compared to using swaps, which involves twice as many moves.
131129

132-
priv fn siftup(&mut self, start: uint, pos: uint) {
130+
priv fn siftup(&mut self, start: uint, mut pos: uint) {
133131
unsafe {
134-
let mut pos = pos;
135132
let new = move *addr_of(&self.data[pos]);
136133

137134
while pos > start {
@@ -149,9 +146,8 @@ impl <T: Ord> PriorityQueue<T> {
149146
}
150147
}
151148

152-
priv fn siftdown_range(&mut self, pos: uint, end: uint) {
149+
priv fn siftdown_range(&mut self, mut pos: uint, end: uint) {
153150
unsafe {
154-
let mut pos = pos;
155151
let start = pos;
156152
let new = move *addr_of(&self.data[pos]);
157153

src/libstd/treemap.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -572,9 +572,8 @@ pure fn each_reverse<K: Ord, V>(node: &Option<~TreeNode<K, V>>,
572572
}
573573

574574
// Remove left horizontal link by rotating right
575-
fn skew<K: Ord, V>(node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
575+
fn skew<K: Ord, V>(mut node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
576576
if node.left.map_default(false, |x| x.level == node.level) {
577-
let mut node = node;
578577
let mut save = node.left.swap_unwrap();
579578
node.left <-> save.right; // save.right now None
580579
save.right = Some(node);
@@ -586,10 +585,9 @@ fn skew<K: Ord, V>(node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
586585

587586
// Remove dual horizontal link by rotating left and increasing level of
588587
// the parent
589-
fn split<K: Ord, V>(node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
588+
fn split<K: Ord, V>(mut node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
590589
if node.right.map_default(false,
591590
|x| x.right.map_default(false, |y| y.level == node.level)) {
592-
let mut node = node;
593591
let mut save = node.right.swap_unwrap();
594592
node.right <-> save.left; // save.left now None
595593
save.left = Some(node);
@@ -628,8 +626,7 @@ fn remove<K: Ord, V>(node: &mut Option<~TreeNode<K, V>>, key: &K) -> bool {
628626
fn heir_swap<K: Ord, V>(node: &mut TreeNode<K, V>,
629627
child: &mut Option<~TreeNode<K, V>>) {
630628
// *could* be done without recursion, but it won't borrow check
631-
do child.mutate |child| {
632-
let mut child = child;
629+
do child.mutate |mut child| {
633630
if child.right.is_some() {
634631
heir_swap(&mut *node, &mut child.right);
635632
} else {
@@ -682,15 +679,13 @@ fn remove<K: Ord, V>(node: &mut Option<~TreeNode<K, V>>, key: &K) -> bool {
682679
save.level -= 1;
683680

684681
if right_level > save.level {
685-
do save.right.mutate |x| {
686-
let mut x = x; x.level = save.level; x
687-
}
682+
do save.right.mutate |mut x| { x.level = save.level; x }
688683
}
689684

690685
save = skew(save);
691686

692-
do save.right.mutate |right| {
693-
let mut right = skew(right);
687+
do save.right.mutate |mut right| {
688+
right = skew(right);
694689
right.right.mutate(skew);
695690
right
696691
}

0 commit comments

Comments
 (0)