Список ссылок стандартной библиотеки Node
использует тип Option
:
struct Node<T> {
next: Option<NonNull<Node<T>>>,
prev: Option<NonNull<Node<T>>>,
element: T,
}
и создает узел с таким кодом:
Node {
next: None,
prev: None,
element,
}
Реализация LeafNode
из BTree
, стандартная библиотека использует необработанный указатель для родительского узла :
struct LeafNode<K, V> {
parent: *const InternalNode<K, V>,
parent_idx: MaybeUninit<u16>,
len: u16,
keys: MaybeUninit<[K; CAPACITY]>,
vals: MaybeUninit<[V; CAPACITY]>,
}
и создает новые конечные узлы , устанавливая parent
в ptr::null
:
LeafNode {
keys: MaybeUninit::uninitialized(),
vals: MaybeUninit::uninitialized(),
parent: ptr::null(),
parent_idx: MaybeUninit::uninitialized(),
len: 0
}
Мы можем использовать nullptr
для реализации приведенного выше кода на C ++, в чем же разница между Option
и std::ptr::null()
для представления нулевого указателя? Каков рекомендуемый способ представления нулевого указателя?