]> git.lizzy.rs Git - rust.git/blobdiff - src/liballoc/collections/btree/map.rs
Make implementation of navigation simpler, safer and faster
[rust.git] / src / liballoc / collections / btree / map.rs
index c1778f2065d408a8f0dc7ea321fca9abb50953fa..e62855f2fb3475b946119d39bcff53dfa772c304 100644 (file)
@@ -1473,16 +1473,13 @@ impl<K, V> Drop for IntoIter<K, V> {
     fn drop(&mut self) {
         self.for_each(drop);
         unsafe {
-            let leaf_node = ptr::read(&self.front).into_node();
-            if leaf_node.is_shared_root() {
+            let mut node = ptr::read(&self.front).into_node().forget_type();
+            if node.is_shared_root() {
                 return;
             }
 
-            if let Some(first_parent) = leaf_node.deallocate_and_ascend() {
-                let mut cur_internal_node = first_parent.into_node();
-                while let Some(parent) = cur_internal_node.deallocate_and_ascend() {
-                    cur_internal_node = parent.into_node()
-                }
+            while let Some(parent) = node.deallocate_and_ascend() {
+                node = parent.into_node().forget_type();
             }
         }
     }