#[repr(C)]struct InternalNode<K, V> {
data: LeafNode<K, V>,
edges: [MaybeUninit<NonNull<LeafNode<K, V>>>; 12],
}Expand description
The underlying representation of internal nodes. As with LeafNodes, these should be hidden
behind BoxedNodes to prevent dropping uninitialized keys and values. Any pointer to an
InternalNode can be directly cast to a pointer to the underlying LeafNode portion of the
node, allowing code to act on leaf and internal nodes generically without having to even check
which of the two a pointer is pointing at. This property is enabled by the use of repr(C).
Fields§
§data: LeafNode<K, V>§edges: [MaybeUninit<NonNull<LeafNode<K, V>>>; 12]The pointers to the children of this node. len + 1 of these are considered
initialized and valid, except that near the end, while the tree is held
through borrow type Dying, some of these pointers are dangling.
Implementations§
Source§impl<K, V> InternalNode<K, V>
impl<K, V> InternalNode<K, V>
Sourceunsafe fn new<A: AllocatorClone>(alloc: A) -> Box<Self, A>
unsafe fn new<A: AllocatorClone>(alloc: A) -> Box<Self, A>
Creates a new boxed InternalNode.
§Safety
An invariant of internal nodes is that they have at least one initialized and valid edge. This function does not set up such an edge.
Auto Trait Implementations§
impl<K, V> !Send for InternalNode<K, V>
impl<K, V> !Sync for InternalNode<K, V>
impl<K, V> Freeze for InternalNode<K, V>
impl<K, V> RefUnwindSafe for InternalNode<K, V>
impl<K, V> Unpin for InternalNode<K, V>
impl<K, V> UnsafeUnpin for InternalNode<K, V>
impl<K, V> UnwindSafe for InternalNode<K, V>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> SizeHint for Twhere
T: ?Sized,
impl<T> SizeHint for Twhere
T: ?Sized,
Source§default fn lower_bound(&self) -> usize
default fn lower_bound(&self) -> usize
core_io_internals)[u8; 12] could return any value between 0 and
12 inclusively as a correct implementation. Read moreSource§impl<T> SizedTypeProperties for T
impl<T> SizedTypeProperties for T
Source§#[doc(hidden)]const SIZE: usize = _
#[doc(hidden)]const SIZE: usize = _
sized_type_properties)Source§#[doc(hidden)]const ALIGN: usize = _
#[doc(hidden)]const ALIGN: usize = _
sized_type_properties)Source§#[doc(hidden)]const ALIGNMENT: Alignment = _
#[doc(hidden)]const ALIGNMENT: Alignment = _
ptr_alignment_type #102070)Source§#[doc(hidden)]const IS_ZST: bool = _
#[doc(hidden)]const IS_ZST: bool = _
sized_type_properties)Source§#[doc(hidden)]const LAYOUT: Layout = _
#[doc(hidden)]const LAYOUT: Layout = _
sized_type_properties)Source§#[doc(hidden)]const MAX_SLICE_LEN: usize = _
#[doc(hidden)]const MAX_SLICE_LEN: usize = _
sized_type_properties)[Self]. Read more