diff options
| author | Nathaniel Woods <nwoods@cimpress.com> | 2025-03-04 16:33:21 -0500 |
|---|---|---|
| committer | Nathaniel Woods <nwoods@cimpress.com> | 2025-03-10 11:12:26 -0400 |
| commit | 8bbc080cc71f4af39225d9b0f3e70cf478347f15 (patch) | |
| tree | 99823b9ae02b6eac663e65b29298c96a9ad41bed | |
| parent | 2b285cd5f0877e30ad1d83e04f8cc46254e43391 (diff) | |
| download | rust-8bbc080cc71f4af39225d9b0f3e70cf478347f15.tar.gz rust-8bbc080cc71f4af39225d9b0f3e70cf478347f15.zip | |
Added `Clone` implementation for `ChunkBy`
| -rw-r--r-- | library/alloctests/tests/slice.rs | 13 | ||||
| -rw-r--r-- | library/core/src/slice/iter.rs | 7 |
2 files changed, 20 insertions, 0 deletions
diff --git a/library/alloctests/tests/slice.rs b/library/alloctests/tests/slice.rs index 2516563187f..1e15d54d979 100644 --- a/library/alloctests/tests/slice.rs +++ b/library/alloctests/tests/slice.rs @@ -1636,6 +1636,19 @@ fn test_chunk_by() { assert_eq!(iter.next_back(), Some(&[1][..])); assert_eq!(iter.next(), Some(&[2, 2, 2][..])); assert_eq!(iter.next_back(), None); + + let mut iter = slice.chunk_by(|a, b| a == b); + assert_eq!(iter.next(), Some(&[1, 1, 1][..])); + assert_eq!(iter.next(), Some(&[3, 3][..])); + let mut iter_clone = iter.clone(); + assert_eq!(iter.next(), Some(&[2, 2, 2][..])); + assert_eq!(iter.next(), Some(&[1][..])); + assert_eq!(iter.next(), Some(&[0][..])); + assert_eq!(iter.next(), None); + assert_eq!(iter_clone.next(), Some(&[2, 2, 2][..])); + assert_eq!(iter_clone.next(), Some(&[1][..])); + assert_eq!(iter_clone.next(), Some(&[0][..])); + assert_eq!(iter_clone.next(), None); } #[test] diff --git a/library/core/src/slice/iter.rs b/library/core/src/slice/iter.rs index a687ed7129d..bf48068b254 100644 --- a/library/core/src/slice/iter.rs +++ b/library/core/src/slice/iter.rs @@ -3373,6 +3373,13 @@ where impl<'a, T: 'a, P> FusedIterator for ChunkBy<'a, T, P> where P: FnMut(&T, &T) -> bool {} #[stable(feature = "slice_group_by", since = "1.77.0")] +impl<'a, T: 'a, P: Clone> Clone for ChunkBy<'a, T, P> { + fn clone(&self) -> Self { + Self { slice: self.slice, predicate: self.predicate.clone() } + } +} + +#[stable(feature = "slice_group_by", since = "1.77.0")] impl<'a, T: 'a + fmt::Debug, P> fmt::Debug for ChunkBy<'a, T, P> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("ChunkBy").field("slice", &self.slice).finish() |
