@@ -1159,6 +1159,12 @@ impl<'a, K: 'a, V: 'a, NodeType> Handle<NodeRef<marker::Mut<'a>, K, V, NodeType>
1159
1159
( key, val)
1160
1160
}
1161
1161
}
1162
+
1163
+ /// Replace the key and value that the KV handle refers to.
1164
+ pub fn replace_kv ( & mut self , k : K , v : V ) -> ( K , V ) {
1165
+ let ( key, val) = self . kv_mut ( ) ;
1166
+ ( mem:: replace ( key, k) , mem:: replace ( val, v) )
1167
+ }
1162
1168
}
1163
1169
1164
1170
impl < ' a , K : ' a , V : ' a , NodeType > Handle < NodeRef < marker:: Mut < ' a > , K , V , NodeType > , marker:: KV > {
@@ -1432,8 +1438,7 @@ impl<'a, K: 'a, V: 'a> BalancingContext<'a, K, V> {
1432
1438
unsafe {
1433
1439
let ( k, v, edge) = self . left_child . pop ( ) ;
1434
1440
1435
- let k = mem:: replace ( self . parent . kv_mut ( ) . 0 , k) ;
1436
- let v = mem:: replace ( self . parent . kv_mut ( ) . 1 , v) ;
1441
+ let ( k, v) = self . parent . replace_kv ( k, v) ;
1437
1442
1438
1443
match self . right_child . reborrow_mut ( ) . force ( ) {
1439
1444
ForceResult :: Leaf ( mut leaf) => leaf. push_front ( k, v) ,
@@ -1455,8 +1460,7 @@ impl<'a, K: 'a, V: 'a> BalancingContext<'a, K, V> {
1455
1460
unsafe {
1456
1461
let ( k, v, edge) = self . right_child . pop_front ( ) ;
1457
1462
1458
- let k = mem:: replace ( self . parent . kv_mut ( ) . 0 , k) ;
1459
- let v = mem:: replace ( self . parent . kv_mut ( ) . 1 , v) ;
1463
+ let ( k, v) = self . parent . replace_kv ( k, v) ;
1460
1464
1461
1465
match self . left_child . reborrow_mut ( ) . force ( ) {
1462
1466
ForceResult :: Leaf ( mut leaf) => leaf. push ( k, v) ,
0 commit comments