about summary refs log tree commit diff
path: root/library/alloc/src
diff options
context:
space:
mode:
authorMarijn Schouten <mhkbst@gmail.com>2025-09-19 17:21:55 +0000
committerMarijn Schouten <mhkbst@gmail.com>2025-09-19 17:21:55 +0000
commite2de670558111dc6ce46d764aed6cb3dc4222794 (patch)
tree536c14a846949eb9a26b9fd0ae3e0d5097759f29 /library/alloc/src
parent2f4dfc753fd86c672aa4145940db075a8a149f17 (diff)
downloadrust-e2de670558111dc6ce46d764aed6cb3dc4222794.tar.gz
rust-e2de670558111dc6ce46d764aed6cb3dc4222794.zip
btree: safety comments for init and new
Diffstat (limited to 'library/alloc/src')
-rw-r--r--library/alloc/src/collections/btree/node.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/library/alloc/src/collections/btree/node.rs b/library/alloc/src/collections/btree/node.rs
index 37f784a322c..b233e1740b7 100644
--- a/library/alloc/src/collections/btree/node.rs
+++ b/library/alloc/src/collections/btree/node.rs
@@ -67,6 +67,10 @@ struct LeafNode<K, V> {
 
 impl<K, V> LeafNode<K, V> {
     /// Initializes a new `LeafNode` in-place.
+    ///
+    /// # Safety
+    ///
+    /// The caller must ensure that `this` points to a (possibly uninitialized) `LeafNode`
     unsafe fn init(this: *mut Self) {
         // As a general policy, we leave fields uninitialized if they can be, as this should
         // be both slightly faster and easier to track in Valgrind.
@@ -79,9 +83,11 @@ impl<K, V> LeafNode<K, V> {
 
     /// Creates a new boxed `LeafNode`.
     fn new<A: Allocator + Clone>(alloc: A) -> Box<Self, A> {
+        let mut leaf = Box::new_uninit_in(alloc);
         unsafe {
-            let mut leaf = Box::new_uninit_in(alloc);
+            // SAFETY: `leaf` points to a `LeafNode`
             LeafNode::init(leaf.as_mut_ptr());
+            // SAFETY: `leaf` was just initialized
             leaf.assume_init()
         }
     }