@@ -1299,7 +1299,7 @@ impl<'a, K: 'a, V: 'a> Iterator for Iter<'a, K, V> {
1299
1299
None
1300
1300
} else {
1301
1301
self . length -= 1 ;
1302
- Some ( unsafe { self . range . next_unchecked ( ) } )
1302
+ Some ( unsafe { self . range . inner . next_unchecked ( ) } )
1303
1303
}
1304
1304
}
1305
1305
@@ -1330,7 +1330,7 @@ impl<'a, K: 'a, V: 'a> DoubleEndedIterator for Iter<'a, K, V> {
1330
1330
None
1331
1331
} else {
1332
1332
self . length -= 1 ;
1333
- Some ( unsafe { self . range . next_back_unchecked ( ) } )
1333
+ Some ( unsafe { self . range . inner . next_back_unchecked ( ) } )
1334
1334
}
1335
1335
}
1336
1336
}
@@ -1368,7 +1368,7 @@ impl<'a, K: 'a, V: 'a> Iterator for IterMut<'a, K, V> {
1368
1368
None
1369
1369
} else {
1370
1370
self . length -= 1 ;
1371
- Some ( unsafe { self . range . next_unchecked ( ) } )
1371
+ Some ( unsafe { self . range . inner . next_unchecked ( ) } )
1372
1372
}
1373
1373
}
1374
1374
@@ -1396,7 +1396,7 @@ impl<'a, K: 'a, V: 'a> DoubleEndedIterator for IterMut<'a, K, V> {
1396
1396
None
1397
1397
} else {
1398
1398
self . length -= 1 ;
1399
- Some ( unsafe { self . range . next_back_unchecked ( ) } )
1399
+ Some ( unsafe { self . range . inner . next_back_unchecked ( ) } )
1400
1400
}
1401
1401
}
1402
1402
}
@@ -1475,7 +1475,7 @@ impl<K, V> Drop for Dropper<K, V> {
1475
1475
#[ stable( feature = "btree_drop" , since = "1.7.0" ) ]
1476
1476
impl < K , V > Drop for IntoIter < K , V > {
1477
1477
fn drop ( & mut self ) {
1478
- if let Some ( front) = self . range . front . take ( ) {
1478
+ if let Some ( front) = self . range . take_front ( ) {
1479
1479
Dropper { front, remaining_length : self . length } ;
1480
1480
}
1481
1481
}
@@ -1490,8 +1490,7 @@ impl<K, V> Iterator for IntoIter<K, V> {
1490
1490
None
1491
1491
} else {
1492
1492
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 ( ) } ;
1495
1494
Some ( kv. into_key_val ( ) )
1496
1495
}
1497
1496
}
@@ -1508,8 +1507,7 @@ impl<K, V> DoubleEndedIterator for IntoIter<K, V> {
1508
1507
None
1509
1508
} else {
1510
1509
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 ( ) } ;
1513
1511
Some ( kv. into_key_val ( ) )
1514
1512
}
1515
1513
}
@@ -1727,7 +1725,7 @@ impl<'a, K, V> Iterator for Range<'a, K, V> {
1727
1725
type Item = ( & ' a K , & ' a V ) ;
1728
1726
1729
1727
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 ( )
1731
1729
}
1732
1730
1733
1731
fn last ( mut self ) -> Option < ( & ' a K , & ' a V ) > {
@@ -1777,12 +1775,6 @@ impl<K, V> ExactSizeIterator for ValuesMut<'_, K, V> {
1777
1775
#[ stable( feature = "fused" , since = "1.26.0" ) ]
1778
1776
impl < K , V > FusedIterator for ValuesMut < ' _ , K , V > { }
1779
1777
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
-
1786
1778
#[ stable( feature = "map_into_keys_values" , since = "1.54.0" ) ]
1787
1779
impl < K , V > Iterator for IntoKeys < K , V > {
1788
1780
type Item = K ;
@@ -1862,13 +1854,7 @@ impl<K, V> FusedIterator for IntoValues<K, V> {}
1862
1854
#[ stable( feature = "btree_range" , since = "1.17.0" ) ]
1863
1855
impl < ' a , K , V > DoubleEndedIterator for Range < ' a , K , V > {
1864
1856
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 ( )
1872
1858
}
1873
1859
}
1874
1860
@@ -1878,7 +1864,7 @@ impl<K, V> FusedIterator for Range<'_, K, V> {}
1878
1864
#[ stable( feature = "btree_range" , since = "1.17.0" ) ]
1879
1865
impl < K , V > Clone for Range < ' _ , K , V > {
1880
1866
fn clone ( & self ) -> Self {
1881
- Range { inner : LeafRange { front : self . inner . front , back : self . inner . back } }
1867
+ Range { inner : self . inner . clone ( ) }
1882
1868
}
1883
1869
}
1884
1870
@@ -1887,7 +1873,7 @@ impl<'a, K, V> Iterator for RangeMut<'a, K, V> {
1887
1873
type Item = ( & ' a K , & ' a mut V ) ;
1888
1874
1889
1875
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 ( )
1891
1877
}
1892
1878
1893
1879
fn last ( mut self ) -> Option < ( & ' a K , & ' a mut V ) > {
@@ -1904,10 +1890,6 @@ impl<'a, K, V> Iterator for RangeMut<'a, K, V> {
1904
1890
}
1905
1891
1906
1892
impl < ' 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
-
1911
1893
/// Returns an iterator of references over the remaining items.
1912
1894
#[ inline]
1913
1895
pub ( super ) fn iter ( & self ) -> Range < ' _ , K , V > {
@@ -1918,19 +1900,13 @@ impl<'a, K, V> RangeMut<'a, K, V> {
1918
1900
#[ stable( feature = "btree_range" , since = "1.17.0" ) ]
1919
1901
impl < ' a , K , V > DoubleEndedIterator for RangeMut < ' a , K , V > {
1920
1902
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 ( )
1922
1904
}
1923
1905
}
1924
1906
1925
1907
#[ stable( feature = "fused" , since = "1.26.0" ) ]
1926
1908
impl < K , V > FusedIterator for RangeMut < ' _ , K , V > { }
1927
1909
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
-
1934
1910
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
1935
1911
impl < K : Ord , V > FromIterator < ( K , V ) > for BTreeMap < K , V > {
1936
1912
fn from_iter < T : IntoIterator < Item = ( K , V ) > > ( iter : T ) -> BTreeMap < K , V > {
0 commit comments