@@ -1299,7 +1299,7 @@ impl<'a, K: 'a, V: 'a> Iterator for Iter<'a, K, V> {
12991299 None
13001300 } else {
13011301 self . length -= 1 ;
1302- Some ( unsafe { self . range . next_unchecked ( ) } )
1302+ Some ( unsafe { self . range . inner . next_unchecked ( ) } )
13031303 }
13041304 }
13051305
@@ -1330,7 +1330,7 @@ impl<'a, K: 'a, V: 'a> DoubleEndedIterator for Iter<'a, K, V> {
13301330 None
13311331 } else {
13321332 self . length -= 1 ;
1333- Some ( unsafe { self . range . next_back_unchecked ( ) } )
1333+ Some ( unsafe { self . range . inner . next_back_unchecked ( ) } )
13341334 }
13351335 }
13361336}
@@ -1368,7 +1368,7 @@ impl<'a, K: 'a, V: 'a> Iterator for IterMut<'a, K, V> {
13681368 None
13691369 } else {
13701370 self . length -= 1 ;
1371- Some ( unsafe { self . range . next_unchecked ( ) } )
1371+ Some ( unsafe { self . range . inner . next_unchecked ( ) } )
13721372 }
13731373 }
13741374
@@ -1396,7 +1396,7 @@ impl<'a, K: 'a, V: 'a> DoubleEndedIterator for IterMut<'a, K, V> {
13961396 None
13971397 } else {
13981398 self . length -= 1 ;
1399- Some ( unsafe { self . range . next_back_unchecked ( ) } )
1399+ Some ( unsafe { self . range . inner . next_back_unchecked ( ) } )
14001400 }
14011401 }
14021402}
@@ -1475,7 +1475,7 @@ impl<K, V> Drop for Dropper<K, V> {
14751475#[ stable( feature = "btree_drop" , since = "1.7.0" ) ]
14761476impl < K , V > Drop for IntoIter < K , V > {
14771477 fn drop ( & mut self ) {
1478- if let Some ( front) = self . range . front . take ( ) {
1478+ if let Some ( front) = self . range . take_front ( ) {
14791479 Dropper { front, remaining_length : self . length } ;
14801480 }
14811481 }
@@ -1490,8 +1490,7 @@ impl<K, V> Iterator for IntoIter<K, V> {
14901490 None
14911491 } else {
14921492 self . length -= 1 ;
1493- let front = self . range . front . as_mut ( ) . unwrap ( ) ;
1494- let kv = unsafe { front. deallocating_next_unchecked ( ) } ;
1493+ let kv = unsafe { self . range . deallocating_next_unchecked ( ) } ;
14951494 Some ( kv. into_key_val ( ) )
14961495 }
14971496 }
@@ -1508,8 +1507,7 @@ impl<K, V> DoubleEndedIterator for IntoIter<K, V> {
15081507 None
15091508 } else {
15101509 self . length -= 1 ;
1511- let back = self . range . back . as_mut ( ) . unwrap ( ) ;
1512- let kv = unsafe { back. deallocating_next_back_unchecked ( ) } ;
1510+ let kv = unsafe { self . range . deallocating_next_back_unchecked ( ) } ;
15131511 Some ( kv. into_key_val ( ) )
15141512 }
15151513 }
@@ -1727,7 +1725,7 @@ impl<'a, K, V> Iterator for Range<'a, K, V> {
17271725 type Item = ( & ' a K , & ' a V ) ;
17281726
17291727 fn next ( & mut self ) -> Option < ( & ' a K , & ' a V ) > {
1730- if self . inner . is_empty ( ) { None } else { Some ( unsafe { self . next_unchecked ( ) } ) }
1728+ self . inner . next_checked ( )
17311729 }
17321730
17331731 fn last ( mut self ) -> Option < ( & ' a K , & ' a V ) > {
@@ -1777,12 +1775,6 @@ impl<K, V> ExactSizeIterator for ValuesMut<'_, K, V> {
17771775#[ stable( feature = "fused" , since = "1.26.0" ) ]
17781776impl < K , V > FusedIterator for ValuesMut < ' _ , K , V > { }
17791777
1780- impl < ' a , K , V > Range < ' a , K , V > {
1781- unsafe fn next_unchecked ( & mut self ) -> ( & ' a K , & ' a V ) {
1782- unsafe { self . inner . front . as_mut ( ) . unwrap_unchecked ( ) . next_unchecked ( ) }
1783- }
1784- }
1785-
17861778#[ stable( feature = "map_into_keys_values" , since = "1.54.0" ) ]
17871779impl < K , V > Iterator for IntoKeys < K , V > {
17881780 type Item = K ;
@@ -1862,13 +1854,7 @@ impl<K, V> FusedIterator for IntoValues<K, V> {}
18621854#[ stable( feature = "btree_range" , since = "1.17.0" ) ]
18631855impl < ' a , K , V > DoubleEndedIterator for Range < ' a , K , V > {
18641856 fn next_back ( & mut self ) -> Option < ( & ' a K , & ' a V ) > {
1865- if self . inner . is_empty ( ) { None } else { Some ( unsafe { self . next_back_unchecked ( ) } ) }
1866- }
1867- }
1868-
1869- impl < ' a , K , V > Range < ' a , K , V > {
1870- unsafe fn next_back_unchecked ( & mut self ) -> ( & ' a K , & ' a V ) {
1871- unsafe { self . inner . back . as_mut ( ) . unwrap_unchecked ( ) . next_back_unchecked ( ) }
1857+ self . inner . next_back_checked ( )
18721858 }
18731859}
18741860
@@ -1878,7 +1864,7 @@ impl<K, V> FusedIterator for Range<'_, K, V> {}
18781864#[ stable( feature = "btree_range" , since = "1.17.0" ) ]
18791865impl < K , V > Clone for Range < ' _ , K , V > {
18801866 fn clone ( & self ) -> Self {
1881- Range { inner : LeafRange { front : self . inner . front , back : self . inner . back } }
1867+ Range { inner : self . inner . clone ( ) }
18821868 }
18831869}
18841870
@@ -1887,7 +1873,7 @@ impl<'a, K, V> Iterator for RangeMut<'a, K, V> {
18871873 type Item = ( & ' a K , & ' a mut V ) ;
18881874
18891875 fn next ( & mut self ) -> Option < ( & ' a K , & ' a mut V ) > {
1890- if self . inner . is_empty ( ) { None } else { Some ( unsafe { self . next_unchecked ( ) } ) }
1876+ self . inner . next_checked ( )
18911877 }
18921878
18931879 fn last ( mut self ) -> Option < ( & ' a K , & ' a mut V ) > {
@@ -1904,10 +1890,6 @@ impl<'a, K, V> Iterator for RangeMut<'a, K, V> {
19041890}
19051891
19061892impl < ' a , K , V > RangeMut < ' a , K , V > {
1907- unsafe fn next_unchecked ( & mut self ) -> ( & ' a K , & ' a mut V ) {
1908- unsafe { self . inner . front . as_mut ( ) . unwrap_unchecked ( ) . next_unchecked ( ) }
1909- }
1910-
19111893 /// Returns an iterator of references over the remaining items.
19121894 #[ inline]
19131895 pub ( super ) fn iter ( & self ) -> Range < ' _ , K , V > {
@@ -1918,19 +1900,13 @@ impl<'a, K, V> RangeMut<'a, K, V> {
19181900#[ stable( feature = "btree_range" , since = "1.17.0" ) ]
19191901impl < ' a , K , V > DoubleEndedIterator for RangeMut < ' a , K , V > {
19201902 fn next_back ( & mut self ) -> Option < ( & ' a K , & ' a mut V ) > {
1921- if self . inner . is_empty ( ) { None } else { Some ( unsafe { self . next_back_unchecked ( ) } ) }
1903+ self . inner . next_back_checked ( )
19221904 }
19231905}
19241906
19251907#[ stable( feature = "fused" , since = "1.26.0" ) ]
19261908impl < K , V > FusedIterator for RangeMut < ' _ , K , V > { }
19271909
1928- impl < ' a , K , V > RangeMut < ' a , K , V > {
1929- unsafe fn next_back_unchecked ( & mut self ) -> ( & ' a K , & ' a mut V ) {
1930- unsafe { self . inner . back . as_mut ( ) . unwrap_unchecked ( ) . next_back_unchecked ( ) }
1931- }
1932- }
1933-
19341910#[ stable( feature = "rust1" , since = "1.0.0" ) ]
19351911impl < K : Ord , V > FromIterator < ( K , V ) > for BTreeMap < K , V > {
19361912 fn from_iter < T : IntoIterator < Item = ( K , V ) > > ( iter : T ) -> BTreeMap < K , V > {
0 commit comments