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`.
This commit is contained in:
commit
f699a55e4b
1 changed files with 12 additions and 12 deletions
|
@ -1544,19 +1544,19 @@ impl<K, V> IntoIterator for BTreeMap<K, V> {
|
||||||
type IntoIter = IntoIter<K, V>;
|
type IntoIter = IntoIter<K, V>;
|
||||||
|
|
||||||
fn into_iter(self) -> IntoIter<K, V> {
|
fn into_iter(self) -> IntoIter<K, V> {
|
||||||
let me = ManuallyDrop::new(self);
|
let mut me = ManuallyDrop::new(self);
|
||||||
if me.root.is_none() {
|
if let Some(root) = me.root.as_mut() {
|
||||||
return IntoIter { front: None, back: None, length: 0 };
|
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() };
|
IntoIter {
|
||||||
let root2 = unsafe { unwrap_unchecked(ptr::read(&me.root)).into_ref() };
|
front: Some(root1.first_leaf_edge()),
|
||||||
let len = me.length;
|
back: Some(root2.last_leaf_edge()),
|
||||||
|
length: len,
|
||||||
IntoIter {
|
}
|
||||||
front: Some(root1.first_leaf_edge()),
|
} else {
|
||||||
back: Some(root2.last_leaf_edge()),
|
IntoIter { front: None, back: None, length: 0 }
|
||||||
length: len,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue