about summary refs log tree commit diff
path: root/src/liballoc/btree
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2017-07-17 14:28:02 +0200
committerSimon Sapin <simon.sapin@exyr.org>2017-07-22 20:38:40 +0200
commit938552a2289d6018e78d9626f011d8eea59be7d9 (patch)
treeee7034499af111de8daa4c91f984aba898af45cc /src/liballoc/btree
parenta4edae95ad0e85b50845be1757670929ff60c88a (diff)
downloadrust-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.rs10
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)
         }
     }