diff options
| author | Simon Sapin <simon.sapin@exyr.org> | 2017-07-17 14:28:02 +0200 |
|---|---|---|
| committer | Simon Sapin <simon.sapin@exyr.org> | 2017-07-22 20:38:40 +0200 |
| commit | 938552a2289d6018e78d9626f011d8eea59be7d9 (patch) | |
| tree | ee7034499af111de8daa4c91f984aba898af45cc /src/liballoc/btree | |
| parent | a4edae95ad0e85b50845be1757670929ff60c88a (diff) | |
| download | rust-938552a2289d6018e78d9626f011d8eea59be7d9.tar.gz rust-938552a2289d6018e78d9626f011d8eea59be7d9.zip | |
Use checked NonZero constructor instead of explicit null check in btree
Diffstat (limited to 'src/liballoc/btree')
| -rw-r--r-- | src/liballoc/btree/node.rs | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/liballoc/btree/node.rs b/src/liballoc/btree/node.rs index a6cbab8497b..06d3a113b94 100644 --- a/src/liballoc/btree/node.rs +++ b/src/liballoc/btree/node.rs @@ -382,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_unchecked(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) } } |
