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