From 4ade06bab8e9a3bf36a50aaaeb03dbb34dca0d71 Mon Sep 17 00:00:00 2001 From: Stein Somers Date: Fri, 10 Apr 2020 10:05:47 +0200 Subject: [PATCH] Rearrange BTreeMap::into_iter to match range_mut. --- src/liballoc/collections/btree/map.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/liballoc/collections/btree/map.rs b/src/liballoc/collections/btree/map.rs index a1e59b2e6af..d00c0cb413f 100644 --- a/src/liballoc/collections/btree/map.rs +++ b/src/liballoc/collections/btree/map.rs @@ -1544,19 +1544,19 @@ impl IntoIterator for BTreeMap { type IntoIter = IntoIter; fn into_iter(self) -> IntoIter { - let me = ManuallyDrop::new(self); - if me.root.is_none() { - return IntoIter { front: None, back: None, length: 0 }; - } + let mut me = ManuallyDrop::new(self); + if let Some(root) = me.root.as_mut() { + let root1 = unsafe { ptr::read(root).into_ref() }; + let root2 = unsafe { ptr::read(root).into_ref() }; + let len = me.length; - let root1 = unsafe { unwrap_unchecked(ptr::read(&me.root)).into_ref() }; - let root2 = unsafe { unwrap_unchecked(ptr::read(&me.root)).into_ref() }; - let len = me.length; - - IntoIter { - front: Some(root1.first_leaf_edge()), - back: Some(root2.last_leaf_edge()), - length: len, + IntoIter { + front: Some(root1.first_leaf_edge()), + back: Some(root2.last_leaf_edge()), + length: len, + } + } else { + IntoIter { front: None, back: None, length: 0 } } } }