diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-04-10 18:15:24 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-10 18:15:24 +0200 |
| commit | f699a55e4b4f2d7ee720aaf6d24f6040fee2dced (patch) | |
| tree | 347a8dcd67c7b34cde6590175c543328d3ed96ac /src/liballoc | |
| parent | 277ce9e2499f72d3d0d84b4921df77a1707ffe52 (diff) | |
| parent | 4ade06bab8e9a3bf36a50aaaeb03dbb34dca0d71 (diff) | |
| download | rust-f699a55e4b4f2d7ee720aaf6d24f6040fee2dced.tar.gz rust-f699a55e4b4f2d7ee720aaf6d24f6040fee2dced.zip | |
Rollup merge of #70981 - ssomers:btreemap_into_into_iter, r=Mark-Simulacrum
Rearrange BTreeMap::into_iter to match range_mut. r? @Mark-Simulacrum I wondered why you catered for the optional root differently in `into_iter` than in `range_mut`.
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/collections/btree/map.rs | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/liballoc/collections/btree/map.rs b/src/liballoc/collections/btree/map.rs index 682e7c53084..38fa3d73624 100644 --- a/src/liballoc/collections/btree/map.rs +++ b/src/liballoc/collections/btree/map.rs @@ -1544,19 +1544,19 @@ impl<K, V> IntoIterator for BTreeMap<K, V> { type IntoIter = IntoIter<K, V>; fn into_iter(self) -> IntoIter<K, V> { - let me = ManuallyDrop::new(self); - if me.root.is_none() { - return IntoIter { front: None, back: None, length: 0 }; - } - - 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, + 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; + + IntoIter { + front: Some(root1.first_leaf_edge()), + back: Some(root2.last_leaf_edge()), + length: len, + } + } else { + IntoIter { front: None, back: None, length: 0 } } } } |
