@@ -1018,6 +1018,16 @@ impl<'a, K: 'a, V: 'a, NodeType> Handle<NodeRef<marker::Immut<'a>, K, V, NodeTyp
1018
1018
}
1019
1019
1020
1020
impl < ' a , K : ' a , V : ' a , NodeType > Handle < NodeRef < marker:: Mut < ' a > , K , V , NodeType > , marker:: KV > {
1021
+ pub fn into_key_mut ( self ) -> & ' a mut K {
1022
+ let keys = self . node . into_key_slice_mut ( ) ;
1023
+ unsafe { keys. get_unchecked_mut ( self . idx ) }
1024
+ }
1025
+
1026
+ pub fn into_val_mut ( self ) -> & ' a mut V {
1027
+ let vals = self . node . into_val_slice_mut ( ) ;
1028
+ unsafe { vals. get_unchecked_mut ( self . idx ) }
1029
+ }
1030
+
1021
1031
pub fn into_kv_mut ( self ) -> ( & ' a mut K , & ' a mut V ) {
1022
1032
unsafe {
1023
1033
let ( keys, vals) = self . node . into_slices_mut ( ) ;
@@ -1216,8 +1226,8 @@ impl<'a, K, V> Handle<NodeRef<marker::Mut<'a>, K, V, marker::Internal>, marker::
1216
1226
unsafe {
1217
1227
let ( k, v, edge) = self . reborrow_mut ( ) . left_edge ( ) . descend ( ) . pop ( ) ;
1218
1228
1219
- let k = mem:: replace ( self . reborrow_mut ( ) . into_kv_mut ( ) . 0 , k) ;
1220
- let v = mem:: replace ( self . reborrow_mut ( ) . into_kv_mut ( ) . 1 , v) ;
1229
+ let k = mem:: replace ( self . kv_mut ( ) . 0 , k) ;
1230
+ let v = mem:: replace ( self . kv_mut ( ) . 1 , v) ;
1221
1231
1222
1232
match self . reborrow_mut ( ) . right_edge ( ) . descend ( ) . force ( ) {
1223
1233
ForceResult :: Leaf ( mut leaf) => leaf. push_front ( k, v) ,
@@ -1233,8 +1243,8 @@ impl<'a, K, V> Handle<NodeRef<marker::Mut<'a>, K, V, marker::Internal>, marker::
1233
1243
unsafe {
1234
1244
let ( k, v, edge) = self . reborrow_mut ( ) . right_edge ( ) . descend ( ) . pop_front ( ) ;
1235
1245
1236
- let k = mem:: replace ( self . reborrow_mut ( ) . into_kv_mut ( ) . 0 , k) ;
1237
- let v = mem:: replace ( self . reborrow_mut ( ) . into_kv_mut ( ) . 1 , v) ;
1246
+ let k = mem:: replace ( self . kv_mut ( ) . 0 , k) ;
1247
+ let v = mem:: replace ( self . kv_mut ( ) . 1 , v) ;
1238
1248
1239
1249
match self . reborrow_mut ( ) . left_edge ( ) . descend ( ) . force ( ) {
1240
1250
ForceResult :: Leaf ( mut leaf) => leaf. push ( k, v) ,
@@ -1262,7 +1272,7 @@ impl<'a, K, V> Handle<NodeRef<marker::Mut<'a>, K, V, marker::Internal>, marker::
1262
1272
let left_kv = left_node. reborrow_mut ( ) . into_kv_pointers_mut ( ) ;
1263
1273
let right_kv = right_node. reborrow_mut ( ) . into_kv_pointers_mut ( ) ;
1264
1274
let parent_kv = {
1265
- let kv = self . reborrow_mut ( ) . into_kv_mut ( ) ;
1275
+ let kv = self . kv_mut ( ) ;
1266
1276
( kv. 0 as * mut K , kv. 1 as * mut V )
1267
1277
} ;
1268
1278
@@ -1319,7 +1329,7 @@ impl<'a, K, V> Handle<NodeRef<marker::Mut<'a>, K, V, marker::Internal>, marker::
1319
1329
let left_kv = left_node. reborrow_mut ( ) . into_kv_pointers_mut ( ) ;
1320
1330
let right_kv = right_node. reborrow_mut ( ) . into_kv_pointers_mut ( ) ;
1321
1331
let parent_kv = {
1322
- let kv = self . reborrow_mut ( ) . into_kv_mut ( ) ;
1332
+ let kv = self . kv_mut ( ) ;
1323
1333
( kv. 0 as * mut K , kv. 1 as * mut V )
1324
1334
} ;
1325
1335
0 commit comments