Rollup merge of #146846 - hkBst:btree-2, r=tgross35

btree InternalNode::new safety comments
This commit is contained in:
Stuart Cook 2025-09-22 20:25:16 +10:00 committed by GitHub
commit 8cf94b6c82
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -117,10 +117,11 @@ impl<K, V> InternalNode<K, V> {
/// initialized and valid edge. This function does not set up
/// such an edge.
unsafe fn new<A: Allocator + Clone>(alloc: A) -> Box<Self, A> {
let mut node = Box::<Self, _>::new_uninit_in(alloc);
unsafe {
let mut node = Box::<Self, _>::new_uninit_in(alloc);
// We only need to initialize the data; the edges are MaybeUninit.
// SAFETY: argument points to the `node.data` `LeafNode`
LeafNode::init(&raw mut (*node.as_mut_ptr()).data);
// SAFETY: `node.data` was just initialized and `node.edges` is MaybeUninit.
node.assume_init()
}
}