1
1
use alloc:: vec:: { self , Vec } ;
2
2
use std:: cell:: { Cell , RefCell } ;
3
+ use std:: fmt:: Debug ;
3
4
4
5
/// A trait to unify `FnMut` for `ChunkBy` with the chunk key in `IntoChunks`
5
6
trait KeyFunction < A > {
76
77
dropped_group : usize ,
77
78
}
78
79
80
+ impl < K , I , F > Debug for GroupInner < K , I , F >
81
+ where
82
+ K : Debug ,
83
+ I : Iterator + Debug ,
84
+ I :: Item : Debug ,
85
+ {
86
+ debug_fmt_fields ! (
87
+ GroupInner ,
88
+ // key, omitted because functions are almost never Debug
89
+ iter,
90
+ current_key,
91
+ current_elt,
92
+ done,
93
+ top_group,
94
+ oldest_buffered_group,
95
+ bottom_group,
96
+ buffer,
97
+ dropped_group
98
+ ) ;
99
+ }
100
+
79
101
impl < K , I , F > GroupInner < K , I , F >
80
102
where
81
103
I : Iterator ,
@@ -311,6 +333,15 @@ where
311
333
index : Cell < usize > ,
312
334
}
313
335
336
+ impl < K , I , F > Debug for ChunkBy < K , I , F >
337
+ where
338
+ K : Debug ,
339
+ I : Iterator + Debug ,
340
+ I :: Item : Debug ,
341
+ {
342
+ debug_fmt_fields ! ( ChunkBy , inner, index) ;
343
+ }
344
+
314
345
/// Create a new
315
346
pub fn new < K , J , F > ( iter : J , f : F ) -> ChunkBy < K , J :: IntoIter , F >
316
347
where
@@ -385,6 +416,15 @@ where
385
416
parent : & ' a ChunkBy < K , I , F > ,
386
417
}
387
418
419
+ impl < ' a , K , I , F > Debug for Groups < ' a , K , I , F >
420
+ where
421
+ K : Debug ,
422
+ I : Iterator + Debug ,
423
+ I :: Item : Debug ,
424
+ {
425
+ debug_fmt_fields ! ( Groups , parent) ;
426
+ }
427
+
388
428
impl < ' a , K , I , F > Iterator for Groups < ' a , K , I , F >
389
429
where
390
430
I : Iterator ,
@@ -438,6 +478,15 @@ where
438
478
}
439
479
}
440
480
481
+ impl < ' a , K , I , F > Debug for Group < ' a , K , I , F >
482
+ where
483
+ K : Debug ,
484
+ I : Iterator + Debug ,
485
+ I :: Item : Debug ,
486
+ {
487
+ debug_fmt_fields ! ( Group , parent, index, first) ;
488
+ }
489
+
441
490
impl < ' a , K , I , F > Iterator for Group < ' a , K , I , F >
442
491
where
443
492
I : Iterator ,
@@ -503,6 +552,14 @@ where
503
552
index : Cell < usize > ,
504
553
}
505
554
555
+ impl < I > Debug for IntoChunks < I >
556
+ where
557
+ I : Iterator + Debug ,
558
+ I :: Item : Debug ,
559
+ {
560
+ debug_fmt_fields ! ( IntoChunks , inner, index) ;
561
+ }
562
+
506
563
impl < I > Clone for IntoChunks < I >
507
564
where
508
565
I : Clone + Iterator ,
@@ -554,6 +611,14 @@ where
554
611
parent : & ' a IntoChunks < I > ,
555
612
}
556
613
614
+ impl < ' a , I > Debug for Chunks < ' a , I >
615
+ where
616
+ I : Iterator + Debug ,
617
+ I :: Item : Debug ,
618
+ {
619
+ debug_fmt_fields ! ( Chunks , parent) ;
620
+ }
621
+
557
622
impl < ' a , I > Iterator for Chunks < ' a , I >
558
623
where
559
624
I : Iterator ,
@@ -577,6 +642,7 @@ where
577
642
/// An iterator for the elements in a single chunk.
578
643
///
579
644
/// Iterator element type is `I::Item`.
645
+ #[ derive( Debug ) ]
580
646
pub struct Chunk < ' a , I >
581
647
where
582
648
I : Iterator + ' a ,
0 commit comments