Skip to content

Commit 4a7e1ab

Browse files
committed
Merge pull request rust-lang#4633 from thestinger/treemap
use mutable function argument syntax in treemap/priority_queue
2 parents e447521 + ca8f09a commit 4a7e1ab

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
@@ -526,9 +526,8 @@ pure fn each_reverse<K: Ord, V>(node: &Option<~TreeNode<K, V>>,
526526
}
527527

528528
// Remove left horizontal link by rotating right
529-
fn skew<K: Ord, V>(node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
529+
fn skew<K: Ord, V>(mut node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
530530
if node.left.map_default(false, |x| x.level == node.level) {
531-
let mut node = node;
532531
let mut save = node.left.swap_unwrap();
533532
node.left <-> save.right; // save.right now None
534533
save.right = Some(node);
@@ -540,10 +539,9 @@ fn skew<K: Ord, V>(node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
540539

541540
// Remove dual horizontal link by rotating left and increasing level of
542541
// the parent
543-
fn split<K: Ord, V>(node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
542+
fn split<K: Ord, V>(mut node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
544543
if node.right.map_default(false,
545544
|x| x.right.map_default(false, |y| y.level == node.level)) {
546-
let mut node = node;
547545
let mut save = node.right.swap_unwrap();
548546
node.right <-> save.left; // save.left now None
549547
save.left = Some(node);
@@ -582,8 +580,7 @@ fn remove<K: Ord, V>(node: &mut Option<~TreeNode<K, V>>, key: &K) -> bool {
582580
fn heir_swap<K: Ord, V>(node: &mut TreeNode<K, V>,
583581
child: &mut Option<~TreeNode<K, V>>) {
584582
// *could* be done without recursion, but it won't borrow check
585-
do child.mutate |child| {
586-
let mut child = child;
583+
do child.mutate |mut child| {
587584
if child.right.is_some() {
588585
heir_swap(&mut *node, &mut child.right);
589586
} else {
@@ -636,15 +633,13 @@ fn remove<K: Ord, V>(node: &mut Option<~TreeNode<K, V>>, key: &K) -> bool {
636633
save.level -= 1;
637634

638635
if right_level > save.level {
639-
do save.right.mutate |x| {
640-
let mut x = x; x.level = save.level; x
641-
}
636+
do save.right.mutate |mut x| { x.level = save.level; x }
642637
}
643638

644639
save = skew(save);
645640

646-
do save.right.mutate |right| {
647-
let mut right = skew(right);
641+
do save.right.mutate |mut right| {
642+
right = skew(right);
648643
right.right.mutate(skew);
649644
right
650645
}

0 commit comments

Comments
 (0)