diff options
| author | bors <bors@rust-lang.org> | 2017-07-26 21:08:38 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-07-26 21:08:38 +0000 |
| commit | 599be0d18f4c6ddf36366d2a5a2ca6dc65886896 (patch) | |
| tree | b45698b672fa56662213f15740197fc32db9252f /src/liballoc/btree/node.rs | |
| parent | d02fb3bcf42c05740a47fdfb0d9e5dd8ec24ff37 (diff) | |
| parent | 959ebd6785b48360ac48e334a18b3abe66beef17 (diff) | |
| download | rust-599be0d18f4c6ddf36366d2a5a2ca6dc65886896.tar.gz rust-599be0d18f4c6ddf36366d2a5a2ca6dc65886896.zip | |
Auto merge of #43487 - Mark-Simulacrum:rollup, r=Mark-Simulacrum
Rollup of 10 pull requests - Successful merges: #42959, #43447, #43455, #43456, #43458, #43462, #43463, #43465, #43471, #43480 - Failed merges:
Diffstat (limited to 'src/liballoc/btree/node.rs')
| -rw-r--r-- | src/liballoc/btree/node.rs | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/liballoc/btree/node.rs b/src/liballoc/btree/node.rs index 0eaff6f2192..06d3a113b94 100644 --- a/src/liballoc/btree/node.rs +++ b/src/liballoc/btree/node.rs @@ -140,24 +140,22 @@ struct BoxedNode<K, V> { impl<K, V> BoxedNode<K, V> { fn from_leaf(node: Box<LeafNode<K, V>>) -> Self { - unsafe { - BoxedNode { ptr: Unique::new(Box::into_raw(node)) } - } + BoxedNode { ptr: Box::into_unique(node) } } fn from_internal(node: Box<InternalNode<K, V>>) -> Self { unsafe { - BoxedNode { ptr: Unique::new(Box::into_raw(node) as *mut LeafNode<K, V>) } + BoxedNode { ptr: Unique::new_unchecked(Box::into_raw(node) as *mut LeafNode<K, V>) } } } unsafe fn from_ptr(ptr: NonZero<*const LeafNode<K, V>>) -> Self { - BoxedNode { ptr: Unique::new(ptr.get() as *mut LeafNode<K, V>) } + BoxedNode { ptr: Unique::new_unchecked(ptr.get() as *mut LeafNode<K, V>) } } fn as_ptr(&self) -> NonZero<*const LeafNode<K, V>> { unsafe { - NonZero::new(self.ptr.as_ptr()) + NonZero::from(self.ptr.as_ref()) } } } @@ -384,21 +382,19 @@ impl<BorrowType, K, V, Type> NodeRef<BorrowType, K, V, Type> { >, Self > { - if self.as_leaf().parent.is_null() { - Err(self) - } else { + if let Some(non_zero) = NonZero::new(self.as_leaf().parent as *const LeafNode<K, V>) { Ok(Handle { node: NodeRef { height: self.height + 1, - node: unsafe { - NonZero::new(self.as_leaf().parent as *mut LeafNode<K, V>) - }, + node: non_zero, root: self.root, _marker: PhantomData }, idx: self.as_leaf().parent_idx as usize, _marker: PhantomData }) + } else { + Err(self) } } |
