From 22ab4de92ac855a02a2e8517148dfc69b2f3c49c Mon Sep 17 00:00:00 2001 From: Predrag Gruevski Date: Mon, 6 Jul 2026 11:21:25 -0400 Subject: [PATCH] [perf] Add explicit `Iterator::count` impl for `ChunkBy`. --- library/core/src/slice/iter.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/library/core/src/slice/iter.rs b/library/core/src/slice/iter.rs index 18abdbed5af6f..6f75808015e71 100644 --- a/library/core/src/slice/iter.rs +++ b/library/core/src/slice/iter.rs @@ -3050,6 +3050,20 @@ where if self.slice.is_empty() { (0, Some(0)) } else { (1, Some(self.slice.len())) } } + #[inline] + fn count(mut self) -> usize { + let Some((mut previous, rest)) = self.slice.split_first() else { + return 0; + }; + + let mut count = 1; + for current in rest { + count += usize::from(!(self.predicate)(previous, current)); + previous = current; + } + count + } + #[inline] fn last(mut self) -> Option { self.next_back()