@@ -526,9 +526,8 @@ pure fn each_reverse<K: Ord, V>(node: &Option<~TreeNode<K, V>>,
526
526
}
527
527
528
528
// 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 > {
530
530
if node. left . map_default ( false , |x| x. level == node. level ) {
531
- let mut node = node;
532
531
let mut save = node. left . swap_unwrap ( ) ;
533
532
node. left <-> save. right ; // save.right now None
534
533
save. right = Some ( node) ;
@@ -540,10 +539,9 @@ fn skew<K: Ord, V>(node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
540
539
541
540
// Remove dual horizontal link by rotating left and increasing level of
542
541
// 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 > {
544
543
if node. right . map_default ( false ,
545
544
|x| x. right . map_default ( false , |y| y. level == node. level ) ) {
546
- let mut node = node;
547
545
let mut save = node. right . swap_unwrap ( ) ;
548
546
node. right <-> save. left ; // save.left now None
549
547
save. left = Some ( node) ;
@@ -582,8 +580,7 @@ fn remove<K: Ord, V>(node: &mut Option<~TreeNode<K, V>>, key: &K) -> bool {
582
580
fn heir_swap < K : Ord , V > ( node : & mut TreeNode < K , V > ,
583
581
child : & mut Option < ~TreeNode < K , V > > ) {
584
582
// *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| {
587
584
if child. right . is_some ( ) {
588
585
heir_swap ( & mut * node, & mut child. right ) ;
589
586
} else {
@@ -636,15 +633,13 @@ fn remove<K: Ord, V>(node: &mut Option<~TreeNode<K, V>>, key: &K) -> bool {
636
633
save. level -= 1 ;
637
634
638
635
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 }
642
637
}
643
638
644
639
save = skew ( save) ;
645
640
646
- do save. right . mutate |right| {
647
- let mut right = skew ( right) ;
641
+ do save. right . mutate |mut right| {
642
+ right = skew ( right) ;
648
643
right. right . mutate ( skew) ;
649
644
right
650
645
}
0 commit comments