@@ -127,10 +127,6 @@ impl<K, V> BoxedNode<K, V> {
127
127
BoxedNode { ptr : Unique :: from ( & mut Box :: leak ( node) . data ) }
128
128
}
129
129
130
- unsafe fn from_ptr ( ptr : NonNull < LeafNode < K , V > > ) -> Self {
131
- BoxedNode { ptr : unsafe { Unique :: new_unchecked ( ptr. as_ptr ( ) ) } }
132
- }
133
-
134
130
fn as_ptr ( & self ) -> NonNull < LeafNode < K , V > > {
135
131
NonNull :: from ( self . ptr )
136
132
}
@@ -198,7 +194,7 @@ impl<K, V> Root<K, V> {
198
194
/// and is the opposite of `pop_internal_level`.
199
195
pub fn push_internal_level ( & mut self ) -> NodeRef < marker:: Mut < ' _ > , K , V , marker:: Internal > {
200
196
let mut new_node = Box :: new ( unsafe { InternalNode :: new ( ) } ) ;
201
- new_node. edges [ 0 ] . write ( unsafe { BoxedNode :: from_ptr ( self . node . as_ptr ( ) ) } ) ;
197
+ new_node. edges [ 0 ] . write ( unsafe { ptr :: read ( & mut self . node ) } ) ;
202
198
203
199
self . node = BoxedNode :: from_internal ( new_node) ;
204
200
self . height += 1 ;
@@ -224,8 +220,8 @@ impl<K, V> Root<K, V> {
224
220
225
221
let top = self . node . ptr ;
226
222
227
- let internal_node = unsafe { self . internal_node_as_mut ( ) } ;
228
- self . node = unsafe { BoxedNode :: from_ptr ( internal_node. first_edge ( ) . descend ( ) . node ) } ;
223
+ let mut internal_node = unsafe { self . internal_node_as_mut ( ) } ;
224
+ self . node = unsafe { internal_node. as_internal_mut ( ) . edges [ 0 ] . assume_init_read ( ) } ;
229
225
self . height -= 1 ;
230
226
self . node_as_mut ( ) . as_leaf_mut ( ) . parent = None ;
231
227
0 commit comments