@@ -526,8 +526,9 @@ 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 > ( mut node : ~TreeNode < K , V > ) -> ~TreeNode < K , V > {
529+ fn skew < K : Ord , V > ( node : ~TreeNode < K , V > ) -> ~TreeNode < K , V > {
530530 if node. left . map_default ( false , |x| x. level == node. level ) {
531+ let mut node = node;
531532 let mut save = node. left . swap_unwrap ( ) ;
532533 node. left <-> save. right ; // save.right now None
533534 save. right = Some ( node) ;
@@ -539,9 +540,10 @@ fn skew<K: Ord, V>(mut node: ~TreeNode<K, V>) -> ~TreeNode<K, V> {
539540
540541// Remove dual horizontal link by rotating left and increasing level of
541542// the parent
542- fn split < K : Ord , V > ( mut node : ~TreeNode < K , V > ) -> ~TreeNode < K , V > {
543+ fn split < K : Ord , V > ( node : ~TreeNode < K , V > ) -> ~TreeNode < K , V > {
543544 if node. right . map_default ( false ,
544545 |x| x. right . map_default ( false , |y| y. level == node. level ) ) {
546+ let mut node = node;
545547 let mut save = node. right . swap_unwrap ( ) ;
546548 node. right <-> save. left ; // save.left now None
547549 save. left = Some ( node) ;
@@ -580,7 +582,8 @@ fn remove<K: Ord, V>(node: &mut Option<~TreeNode<K, V>>, key: &K) -> bool {
580582 fn heir_swap < K : Ord , V > ( node : & mut TreeNode < K , V > ,
581583 child : & mut Option < ~TreeNode < K , V > > ) {
582584 // *could* be done without recursion, but it won't borrow check
583- do child. mutate |mut child| {
585+ do child. mutate |child| {
586+ let mut child = child;
584587 if child. right . is_some ( ) {
585588 heir_swap ( & mut * node, & mut child. right ) ;
586589 } else {
@@ -633,13 +636,15 @@ fn remove<K: Ord, V>(node: &mut Option<~TreeNode<K, V>>, key: &K) -> bool {
633636 save. level -= 1 ;
634637
635638 if right_level > save. level {
636- do save. right . mutate |mut x| { x. level = save. level ; x }
639+ do save. right . mutate |x| {
640+ let mut x = x; x. level = save. level ; x
641+ }
637642 }
638643
639644 save = skew ( save) ;
640645
641- do save. right . mutate |mut right| {
642- right = skew ( right) ;
646+ do save. right . mutate |right| {
647+ let mut right = skew ( right) ;
643648 right. right . mutate ( skew) ;
644649 right
645650 }
0 commit comments