From c3a387b8f7086fc6d58a4175e8408fbbf375f5f2 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 12 Apr 2022 21:36:37 +0200 Subject: Segment by script --- src/util/mod.rs | 30 ------------------------------ 1 file changed, 30 deletions(-) (limited to 'src/util/mod.rs') diff --git a/src/util/mod.rs b/src/util/mod.rs index e42d0664..d898f545 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -103,12 +103,6 @@ where /// Additional methods for slices. pub trait SliceExt { - /// Find consecutive runs of the same elements in a slice and yield for - /// each such run the element and number of times it appears. - fn group(&self) -> Group<'_, T> - where - T: PartialEq; - /// Split a slice into consecutive runs with the same key and yield for /// each such run the key and the slice of elements with that key. fn group_by_key(&self, f: F) -> GroupByKey<'_, T, F> @@ -118,35 +112,11 @@ pub trait SliceExt { } impl SliceExt for [T] { - fn group(&self) -> Group<'_, T> { - Group { slice: self } - } - fn group_by_key(&self, f: F) -> GroupByKey<'_, T, F> { GroupByKey { slice: self, f } } } -/// This struct is created by [`SliceExt::group`]. -pub struct Group<'a, T> { - slice: &'a [T], -} - -impl<'a, T> Iterator for Group<'a, T> -where - T: PartialEq, -{ - type Item = (&'a T, usize); - - fn next(&mut self) -> Option { - let mut iter = self.slice.iter(); - let first = iter.next()?; - let count = 1 + iter.take_while(|&t| t == first).count(); - self.slice = &self.slice[count ..]; - Some((first, count)) - } -} - /// This struct is created by [`SliceExt::group_by_key`]. pub struct GroupByKey<'a, T, F> { slice: &'a [T], -- cgit v1.2.3