@@ -572,9 +572,8 @@ pure fn each_reverse<K: Ord, V>(node: &Option<~TreeNode<K, V>>,
572
572
}
573
573
574
574
// 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 > {
576
576
if node. left. map_default( false, |x| x. level == node. level) {
577
- let mut node = node;
578
577
let mut save = node. left. swap_unwrap( ) ;
579
578
node. left <-> save. right; // save.right now None
580
579
save. right = Some ( node) ;
@@ -586,10 +585,9 @@ fn skew<K: Ord, V>(node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
586
585
587
586
// Remove dual horizontal link by rotating left and increasing level of
588
587
// 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 > {
590
589
if node. right. map_default( false,
591
590
|x| x. right. map_default( false, |y| y. level == node. level) ) {
592
- let mut node = node;
593
591
let mut save = node. right. swap_unwrap( ) ;
594
592
node. right <-> save. left; // save.left now None
595
593
save. left = Some ( node) ;
@@ -628,8 +626,7 @@ fn remove<K: Ord, V>(node: &mut Option<~TreeNode<K, V>>, key: &K) -> bool {
628
626
fn heir_swap<K : Ord , V >( node: & mut TreeNode <K , V >,
629
627
child: & mut Option <~TreeNode <K , V >>) {
630
628
// *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| {
633
630
if child. right. is_some( ) {
634
631
heir_swap( & mut * node, & mut child. right) ;
635
632
} else {
@@ -682,15 +679,13 @@ fn remove<K: Ord, V>(node: &mut Option<~TreeNode<K, V>>, key: &K) -> bool {
682
679
save. level -= 1 ;
683
680
684
681
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 }
688
683
}
689
684
690
685
save = skew ( save) ;
691
686
692
- do save. right. mutate |right| {
693
- let mut right = skew( right) ;
687
+ do save. right . mutate |mut right| {
688
+ right = skew ( right) ;
694
689
right. right . mutate ( skew) ;
695
690
right
696
691
}
0 commit comments