@@ -393,11 +393,11 @@ impl<BorrowType, K, V, Type> NodeRef<BorrowType, K, V, Type> {
393
393
}
394
394
395
395
pub fn keys ( & self ) -> & [ K ] {
396
- self . reborrow ( ) . into_slices ( ) . 0
396
+ self . reborrow ( ) . into_key_slice ( )
397
397
}
398
398
399
- pub fn vals ( & self ) -> & [ V ] {
400
- self . reborrow ( ) . into_slices ( ) . 1
399
+ fn vals ( & self ) -> & [ V ] {
400
+ self . reborrow ( ) . into_val_slice ( )
401
401
}
402
402
403
403
/// Finds the parent of the current node. Returns `Ok(handle)` if the current
@@ -540,29 +540,37 @@ impl<'a, K, V, Type> NodeRef<marker::Mut<'a>, K, V, Type> {
540
540
}
541
541
542
542
pub fn keys_mut ( & mut self ) -> & mut [ K ] {
543
- unsafe { self . reborrow_mut ( ) . into_slices_mut ( ) . 0 }
543
+ unsafe { self . reborrow_mut ( ) . into_key_slice_mut ( ) }
544
544
}
545
545
546
546
pub fn vals_mut ( & mut self ) -> & mut [ V ] {
547
- unsafe { self . reborrow_mut ( ) . into_slices_mut ( ) . 1 }
547
+ unsafe { self . reborrow_mut ( ) . into_val_slice_mut ( ) }
548
548
}
549
549
}
550
550
551
551
impl < ' a , K : ' a , V : ' a , Type > NodeRef < marker:: Immut < ' a > , K , V , Type > {
552
- pub fn into_slices ( self ) -> ( & ' a [ K ] , & ' a [ V ] ) {
552
+ fn into_key_slice ( self ) -> & ' a [ K ] {
553
553
unsafe {
554
- (
555
- slice:: from_raw_parts (
556
- self . as_leaf ( ) . keys . as_ptr ( ) ,
557
- self . len ( )
558
- ) ,
559
- slice:: from_raw_parts (
560
- self . as_leaf ( ) . vals . as_ptr ( ) ,
561
- self . len ( )
562
- )
554
+ slice:: from_raw_parts (
555
+ self . as_leaf ( ) . keys . as_ptr ( ) ,
556
+ self . len ( )
557
+ )
558
+ }
559
+ }
560
+
561
+ fn into_val_slice ( self ) -> & ' a [ V ] {
562
+ unsafe {
563
+ slice:: from_raw_parts (
564
+ self . as_leaf ( ) . vals . as_ptr ( ) ,
565
+ self . len ( )
563
566
)
564
567
}
565
568
}
569
+
570
+ fn into_slices ( self ) -> ( & ' a [ K ] , & ' a [ V ] ) {
571
+ let k = unsafe { ptr:: read ( & self ) } ;
572
+ ( k. into_key_slice ( ) , self . into_val_slice ( ) )
573
+ }
566
574
}
567
575
568
576
impl < ' a , K : ' a , V : ' a , Type > NodeRef < marker:: Mut < ' a > , K , V , Type > {
@@ -574,20 +582,28 @@ impl<'a, K: 'a, V: 'a, Type> NodeRef<marker::Mut<'a>, K, V, Type> {
574
582
}
575
583
}
576
584
577
- pub fn into_slices_mut ( mut self ) -> ( & ' a mut [ K ] , & ' a mut [ V ] ) {
585
+ fn into_key_slice_mut ( mut self ) -> & ' a mut [ K ] {
578
586
unsafe {
579
- (
580
- slice:: from_raw_parts_mut (
581
- & mut self . as_leaf_mut ( ) . keys as * mut [ K ] as * mut K ,
582
- self . len ( )
583
- ) ,
584
- slice:: from_raw_parts_mut (
585
- & mut self . as_leaf_mut ( ) . vals as * mut [ V ] as * mut V ,
586
- self . len ( )
587
- )
587
+ slice:: from_raw_parts_mut (
588
+ & mut self . as_leaf_mut ( ) . keys as * mut [ K ] as * mut K ,
589
+ self . len ( )
590
+ )
591
+ }
592
+ }
593
+
594
+ fn into_val_slice_mut ( mut self ) -> & ' a mut [ V ] {
595
+ unsafe {
596
+ slice:: from_raw_parts_mut (
597
+ & mut self . as_leaf_mut ( ) . vals as * mut [ V ] as * mut V ,
598
+ self . len ( )
588
599
)
589
600
}
590
601
}
602
+
603
+ fn into_slices_mut ( self ) -> ( & ' a mut [ K ] , & ' a mut [ V ] ) {
604
+ let k = unsafe { ptr:: read ( & self ) } ;
605
+ ( k. into_key_slice_mut ( ) , self . into_val_slice_mut ( ) )
606
+ }
591
607
}
592
608
593
609
impl < ' a , K , V > NodeRef < marker:: Mut < ' a > , K , V , marker:: Leaf > {
0 commit comments