pub trait GroupBy<T> {
    // Required methods
    fn linear_group_by_key<F, K>(&self, func: F) -> LinearGroupByKey<'_, T, F> 
       where F: FnMut(&T) -> K,
             K: PartialEq;
    fn linear_group_by<P>(&self, predicate: P) -> LinearGroupBy<'_, T, P> 
       where P: FnMut(&T, &T) -> bool;
    fn linear_group(&self) -> LinearGroup<'_, T> 
       where T: PartialEq;
    fn binary_group_by_key<F, K>(&self, func: F) -> BinaryGroupByKey<'_, T, F> 
       where F: FnMut(&T) -> K,
             K: PartialEq;
    fn binary_group_by<P>(&self, predicate: P) -> BinaryGroupBy<'_, T, P> 
       where P: FnMut(&T, &T) -> bool;
    fn binary_group(&self) -> BinaryGroup<'_, T> 
       where T: PartialEq;
    fn exponential_group_by_key<F, K>(
        &self,
        func: F
    ) -> ExponentialGroupByKey<'_, T, F> 
       where F: Fn(&T) -> K,
             K: PartialEq;
    fn exponential_group_by<P>(
        &self,
        predicate: P
    ) -> ExponentialGroupBy<'_, T, P> 
       where P: FnMut(&T, &T) -> bool;
    fn exponential_group(&self) -> ExponentialGroup<'_, T> 
       where T: PartialEq;
}
Expand description

A convenient trait to construct an iterator returning non-overlapping groups defined by a predicate.

Required Methods§

source

fn linear_group_by_key<F, K>(&self, func: F) -> LinearGroupByKey<'_, T, F> where F: FnMut(&T) -> K, K: PartialEq,

Returns an iterator on slice groups based that will use the given function to generate keys and determine groups based on them. It uses linear search to iterate over groups.

source

fn linear_group_by<P>(&self, predicate: P) -> LinearGroupBy<'_, T, P> where P: FnMut(&T, &T) -> bool,

Returns an iterator on slice groups using the linear search method.

source

fn linear_group(&self) -> LinearGroup<'_, T> where T: PartialEq,

Returns an iterator on slice groups based on the PartialEq::eq method of T, it uses linear search to iterate over groups.

source

fn binary_group_by_key<F, K>(&self, func: F) -> BinaryGroupByKey<'_, T, F> where F: FnMut(&T) -> K, K: PartialEq,

Returns an iterator on slice groups based that will use the given function to generate keys and determine groups based on them. It uses binary search to iterate over groups.

The predicate function should implement an order consistent with the sort order of the slice.

source

fn binary_group_by<P>(&self, predicate: P) -> BinaryGroupBy<'_, T, P> where P: FnMut(&T, &T) -> bool,

Returns an iterator on slice groups using the binary search method.

The predicate function should implement an order consistent with the sort order of the slice.

source

fn binary_group(&self) -> BinaryGroup<'_, T> where T: PartialEq,

Returns an iterator on slice groups based on the PartialEq::eq method of T, it uses binary search to iterate over groups.

The predicate function should implement an order consistent with the sort order of the slice.

source

fn exponential_group_by_key<F, K>( &self, func: F ) -> ExponentialGroupByKey<'_, T, F> where F: Fn(&T) -> K, K: PartialEq,

Returns an iterator on slice groups based that will use the given function to generate keys and determine groups based on them. It uses exponential search to iterate over groups.

The predicate function should implement an order consistent with the sort order of the slice.

source

fn exponential_group_by<P>(&self, predicate: P) -> ExponentialGroupBy<'_, T, P> where P: FnMut(&T, &T) -> bool,

Returns an iterator on slice groups using the exponential search method.

The predicate function should implement an order consistent with the sort order of the slice.

source

fn exponential_group(&self) -> ExponentialGroup<'_, T> where T: PartialEq,

Returns an iterator on slice groups based on the PartialEq::eq method of T, it uses exponential search to iterate over groups.

The predicate function should implement an order consistent with the sort order of the slice.

Implementations on Foreign Types§

source§

impl<T> GroupBy<T> for [T]

source§

fn linear_group_by_key<F, K>(&self, func: F) -> LinearGroupByKey<'_, T, F> where F: FnMut(&T) -> K, K: PartialEq,

source§

fn linear_group_by<P>(&self, predicate: P) -> LinearGroupBy<'_, T, P> where P: FnMut(&T, &T) -> bool,

source§

fn linear_group(&self) -> LinearGroup<'_, T> where T: PartialEq,

source§

fn binary_group_by_key<F, K>(&self, func: F) -> BinaryGroupByKey<'_, T, F> where F: FnMut(&T) -> K, K: PartialEq,

source§

fn binary_group_by<P>(&self, predicate: P) -> BinaryGroupBy<'_, T, P> where P: FnMut(&T, &T) -> bool,

source§

fn binary_group(&self) -> BinaryGroup<'_, T> where T: PartialEq,

source§

fn exponential_group_by_key<F, K>( &self, func: F ) -> ExponentialGroupByKey<'_, T, F> where F: Fn(&T) -> K, K: PartialEq,

source§

fn exponential_group_by<P>(&self, predicate: P) -> ExponentialGroupBy<'_, T, P> where P: FnMut(&T, &T) -> bool,

source§

fn exponential_group(&self) -> ExponentialGroup<'_, T> where T: PartialEq,

Implementors§