@@ -261,7 +261,12 @@ where
261
261
{
262
262
}
263
263
264
- impl < K : TryClone , V : TryClone , A : Allocator + Clone > TryClone for BTreeMap < K , V , A > {
264
+ impl < K , V , A > TryClone for BTreeMap < K , V , A >
265
+ where
266
+ K : TryClone ,
267
+ V : TryClone ,
268
+ A : Allocator + Clone ,
269
+ {
265
270
fn try_clone ( & self ) -> Result < BTreeMap < K , V , A > , Error > {
266
271
fn clone_subtree < ' a , K , V , A > (
267
272
node : NodeRef < marker:: Immut < ' a > , K , V , marker:: LeafOrInternal > ,
@@ -524,18 +529,31 @@ impl<K, V> Clone for IterRaw<K, V> {
524
529
///
525
530
/// [`iter`]: BTreeMap::iter
526
531
#[ must_use = "iterators are lazy and do nothing unless consumed" ]
527
- pub struct Iter < ' a , K : ' a , V : ' a > {
532
+ pub struct Iter < ' a , K , V >
533
+ where
534
+ K : ' a ,
535
+ V : ' a ,
536
+ {
528
537
range : LazyLeafRange < marker:: Immut < ' a > , K , V > ,
529
538
length : usize ,
530
539
}
531
540
532
- impl < K : fmt:: Debug , V : fmt:: Debug > fmt:: Debug for Iter < ' _ , K , V > {
541
+ impl < K , V > fmt:: Debug for Iter < ' _ , K , V >
542
+ where
543
+ K : fmt:: Debug ,
544
+ V : fmt:: Debug ,
545
+ {
546
+ #[ inline]
533
547
fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
534
548
f. debug_list ( ) . entries ( self . clone ( ) ) . finish ( )
535
549
}
536
550
}
537
551
538
- impl < ' a , K : ' a , V : ' a > Default for Iter < ' a , K , V > {
552
+ impl < ' a , K , V > Default for Iter < ' a , K , V >
553
+ where
554
+ K : ' a ,
555
+ V : ' a ,
556
+ {
539
557
/// Creates an empty `btree_map::Iter`.
540
558
///
541
559
/// ```
@@ -544,6 +562,7 @@ impl<'a, K: 'a, V: 'a> Default for Iter<'a, K, V> {
544
562
/// let iter: btree_map::Iter<'_, u8, u8> = Default::default();
545
563
/// assert_eq!(iter.len(), 0);
546
564
/// ```
565
+ #[ inline]
547
566
fn default ( ) -> Self {
548
567
Iter {
549
568
range : Default :: default ( ) ,
@@ -558,7 +577,11 @@ impl<'a, K: 'a, V: 'a> Default for Iter<'a, K, V> {
558
577
/// documentation for more.
559
578
///
560
579
/// [`iter_mut`]: BTreeMap::iter_mut
561
- pub struct IterMut < ' a , K : ' a , V : ' a > {
580
+ pub struct IterMut < ' a , K , V >
581
+ where
582
+ K : ' a ,
583
+ V : ' a ,
584
+ {
562
585
range : LazyLeafRange < marker:: ValMut < ' a > , K , V > ,
563
586
length : usize ,
564
587
@@ -576,7 +599,11 @@ impl<K: fmt::Debug, V: fmt::Debug> fmt::Debug for IterMut<'_, K, V> {
576
599
}
577
600
}
578
601
579
- impl < ' a , K : ' a , V : ' a > Default for IterMut < ' a , K , V > {
602
+ impl < ' a , K , V > Default for IterMut < ' a , K , V >
603
+ where
604
+ K : ' a ,
605
+ V : ' a ,
606
+ {
580
607
/// Creates an empty `btree_map::IterMut`.
581
608
///
582
609
/// ```
@@ -762,7 +789,11 @@ where
762
789
///
763
790
/// [`range`]: BTreeMap::range
764
791
#[ must_use = "iterators are lazy and do nothing unless consumed" ]
765
- pub struct Range < ' a , K : ' a , V : ' a > {
792
+ pub struct Range < ' a , K , V >
793
+ where
794
+ K : ' a ,
795
+ V : ' a ,
796
+ {
766
797
inner : LeafRange < marker:: Immut < ' a > , K , V > ,
767
798
}
768
799
@@ -779,7 +810,11 @@ impl<K: fmt::Debug, V: fmt::Debug> fmt::Debug for Range<'_, K, V> {
779
810
///
780
811
/// [`range_mut`]: BTreeMap::range_mut
781
812
#[ must_use = "iterators are lazy and do nothing unless consumed" ]
782
- pub struct RangeMut < ' a , K : ' a , V : ' a > {
813
+ pub struct RangeMut < ' a , K , V >
814
+ where
815
+ K : ' a ,
816
+ V : ' a ,
817
+ {
783
818
inner : LeafRange < marker:: ValMut < ' a > , K , V > ,
784
819
785
820
// Be invariant in `K` and `V`
@@ -1900,7 +1935,11 @@ where
1900
1935
}
1901
1936
}
1902
1937
1903
- impl < ' a , K : ' a , V : ' a > Iterator for Iter < ' a , K , V > {
1938
+ impl < ' a , K , V > Iterator for Iter < ' a , K , V >
1939
+ where
1940
+ K : ' a ,
1941
+ V : ' a ,
1942
+ {
1904
1943
type Item = ( & ' a K , & ' a V ) ;
1905
1944
1906
1945
#[ inline]
@@ -1942,7 +1981,11 @@ impl<'a, K: 'a, V: 'a> Iterator for Iter<'a, K, V> {
1942
1981
1943
1982
impl < K , V > FusedIterator for Iter < ' _ , K , V > { }
1944
1983
1945
- impl < ' a , K : ' a , V : ' a > DoubleEndedIterator for Iter < ' a , K , V > {
1984
+ impl < ' a , K , V > DoubleEndedIterator for Iter < ' a , K , V >
1985
+ where
1986
+ K : ' a ,
1987
+ V : ' a ,
1988
+ {
1946
1989
#[ inline]
1947
1990
fn next_back ( & mut self ) -> Option < ( & ' a K , & ' a V ) > {
1948
1991
if self . length == 0 {
@@ -2676,7 +2719,11 @@ impl<'a, K, V> DoubleEndedIterator for RangeMut<'a, K, V> {
2676
2719
2677
2720
impl < K , V > FusedIterator for RangeMut < ' _ , K , V > { }
2678
2721
2679
- impl < K : Ord , V , A : Allocator + Clone > TryExtend < ( K , V ) > for BTreeMap < K , V , A > {
2722
+ impl < K , V , A > TryExtend < ( K , V ) > for BTreeMap < K , V , A >
2723
+ where
2724
+ K : Ord ,
2725
+ A : Allocator + Clone ,
2726
+ {
2680
2727
#[ inline]
2681
2728
fn try_extend < T : IntoIterator < Item = ( K , V ) > > ( & mut self , iter : T ) -> Result < ( ) , Error > {
2682
2729
for ( k, v) in iter {
@@ -2688,15 +2735,22 @@ impl<K: Ord, V, A: Allocator + Clone> TryExtend<(K, V)> for BTreeMap<K, V, A> {
2688
2735
}
2689
2736
2690
2737
#[ cfg( test) ]
2691
- impl < K : Ord , V , A : Allocator + Clone > Extend < ( K , V ) > for BTreeMap < K , V , A > {
2738
+ impl < K , V , A > Extend < ( K , V ) > for BTreeMap < K , V , A >
2739
+ where
2740
+ K : Ord ,
2741
+ A : Allocator + Clone ,
2742
+ {
2692
2743
#[ inline]
2693
2744
fn extend < T : IntoIterator < Item = ( K , V ) > > ( & mut self , iter : T ) {
2694
2745
self . try_extend ( iter) . abort ( ) ;
2695
2746
}
2696
2747
}
2697
2748
2698
- impl < ' a , K : Ord + Copy , V : Copy , A : Allocator + Clone > TryExtend < ( & ' a K , & ' a V ) >
2699
- for BTreeMap < K , V , A >
2749
+ impl < ' a , K , V , A > TryExtend < ( & ' a K , & ' a V ) > for BTreeMap < K , V , A >
2750
+ where
2751
+ K : Ord + Copy ,
2752
+ V : Copy ,
2753
+ A : Allocator + Clone ,
2700
2754
{
2701
2755
#[ inline]
2702
2756
fn try_extend < I : IntoIterator < Item = ( & ' a K , & ' a V ) > > ( & mut self , iter : I ) -> Result < ( ) , Error > {
@@ -2705,8 +2759,11 @@ impl<'a, K: Ord + Copy, V: Copy, A: Allocator + Clone> TryExtend<(&'a K, &'a V)>
2705
2759
}
2706
2760
2707
2761
#[ cfg( test) ]
2708
- impl < ' a , K : Ord + Copy , V : Copy , A : Allocator + Clone > Extend < ( & ' a K , & ' a V ) >
2709
- for BTreeMap < K , V , A >
2762
+ impl < ' a , K , V , A > Extend < ( & ' a K , & ' a V ) > for BTreeMap < K , V , A >
2763
+ where
2764
+ K : Ord + Copy ,
2765
+ V : Copy ,
2766
+ A : Allocator + Clone ,
2710
2767
{
2711
2768
#[ inline]
2712
2769
fn extend < I : IntoIterator < Item = ( & ' a K , & ' a V ) > > ( & mut self , iter : I ) {
@@ -2721,7 +2778,10 @@ where
2721
2778
A : Allocator ,
2722
2779
{
2723
2780
#[ inline]
2724
- fn hash < H : Hasher > ( & self , state : & mut H ) {
2781
+ fn hash < H > ( & self , state : & mut H )
2782
+ where
2783
+ H : Hasher ,
2784
+ {
2725
2785
state. write_usize ( self . len ( ) ) ;
2726
2786
2727
2787
for elt in self {
@@ -3288,19 +3348,29 @@ where
3288
3348
/// first elements of the tree.
3289
3349
///
3290
3350
/// A `Cursor` is created with the [`BTreeMap::lower_bound`] and [`BTreeMap::upper_bound`] methods.
3291
- pub struct Cursor < ' a , K : ' a , V : ' a > {
3351
+ pub struct Cursor < ' a , K , V >
3352
+ where
3353
+ K : ' a ,
3354
+ V : ' a ,
3355
+ {
3292
3356
current : Option < Handle < NodeRef < marker:: Immut < ' a > , K , V , marker:: LeafOrInternal > , marker:: KV > > ,
3293
3357
root : Option < & ' a node:: Root < K , V > > ,
3294
3358
}
3295
3359
3296
3360
impl < K , V > Clone for Cursor < ' _ , K , V > {
3361
+ #[ inline]
3297
3362
fn clone ( & self ) -> Self {
3298
3363
let Cursor { current, root } = * self ;
3299
3364
Cursor { current, root }
3300
3365
}
3301
3366
}
3302
3367
3303
- impl < K : Debug , V : Debug > Debug for Cursor < ' _ , K , V > {
3368
+ impl < K , V > Debug for Cursor < ' _ , K , V >
3369
+ where
3370
+ K : Debug ,
3371
+ V : Debug ,
3372
+ {
3373
+ #[ inline]
3304
3374
fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
3305
3375
f. debug_tuple ( "Cursor" ) . field ( & self . key_value ( ) ) . finish ( )
3306
3376
}
@@ -3319,7 +3389,11 @@ impl<K: Debug, V: Debug> Debug for Cursor<'_, K, V> {
3319
3389
///
3320
3390
/// A `Cursor` is created with the [`BTreeMap::lower_bound_mut`] and [`BTreeMap::upper_bound_mut`]
3321
3391
/// methods.
3322
- pub struct CursorMut < ' a , K : ' a , V : ' a , A = Global > {
3392
+ pub struct CursorMut < ' a , K , V , A = Global >
3393
+ where
3394
+ K : ' a ,
3395
+ V : ' a ,
3396
+ {
3323
3397
current : Option < Handle < NodeRef < marker:: Mut < ' a > , K , V , marker:: LeafOrInternal > , marker:: KV > > ,
3324
3398
#[ cfg_attr( not( test) , allow( unused) ) ]
3325
3399
root : DormantMutRef < ' a , Option < node:: Root < K , V > > > ,
@@ -3329,7 +3403,12 @@ pub struct CursorMut<'a, K: 'a, V: 'a, A = Global> {
3329
3403
alloc : & ' a mut A ,
3330
3404
}
3331
3405
3332
- impl < K : Debug , V : Debug , A > Debug for CursorMut < ' _ , K , V , A > {
3406
+ impl < K , V , A > Debug for CursorMut < ' _ , K , V , A >
3407
+ where
3408
+ K : Debug ,
3409
+ V : Debug ,
3410
+ {
3411
+ #[ inline]
3333
3412
fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
3334
3413
f. debug_tuple ( "CursorMut" ) . field ( & self . key_value ( ) ) . finish ( )
3335
3414
}
0 commit comments