fn safe_group_by<K, F>(
        self,
        key: F,
    ) -> itertools::GroupBy<K, std::vec::IntoIter<<Self as std::iter::Iterator>::Item>, F>
    where
        Self: Sized,
        F: Copy + FnMut(&Self::Item) -> K,
        K: PartialEq + Ord,
    {
        self.sorted_by_key(key).group_by(key)
    }
/// Itertools::group_by groups consecutive elements. This version groups
/// also non-consecutive elements.
:group_by groups consecutive elements. This version groups
also non-consecutive elements.
: group_by groups consecutive elements . This version groups also non - consecutive elements .
fn safe_group_by<K, F>(
        self,
        key: F,
    ) -> itertools::GroupBy<K, std::vec::IntoIter<<Self as std::iter::Iterator>::Item>, F>
    where
        Self: Sized,
        F: Copy + FnMut(&Self::Item) -> K,
        K: PartialEq + Ord,
    {
        self.sorted_by_key(key).group_by(key)
    }
fn safe_group_by < K , F > ( self , key : F , ) -> itertools :: GroupBy < K , std :: vec :: IntoIter < < Self as std :: iter :: Iterator > :: Item > , F > where Self : Sized , F : Copy + FnMut ( & Self :: Item ) -> K , K : PartialEq + Ord , { self . sorted_by_key ( key ) . group_by ( key ) }
Itertools::group_by groups consecutive elements.
Itertools :: group_by groups consecutive elements .
self
key
F