MaxValues

Package, that allows you to effectively get max values out of any sequence

For full documentation, see this

Basic usage

The basic usage of this package looks like this ```rust use max_values::MaxValues;

fn main() { let mut values = MaxValues::::new(); values.push(2); asserteq!(values.asref(), [2]);

values.push(3);
values.push(4);
assert_eq!(values.iter().copied().collect::<HashSet<_>>(), HashSet::from([2, 3, 4]));

values.push(1);
assert_eq!(values.iter().copied().collect::<HashSet<_>>(), HashSet::from([2, 3, 4]));

values.push(5);
assert_eq!(values.iter().copied().collect::<HashSet<_>>(), HashSet::from([3, 4, 5]));

values.push(4);
assert_eq!(values.iter().copied().collect::<HashSet<_>>(), HashSet::from([4, 4, 5]));

} Beware, thatMaxValuesstruct doesn't guarantee any order of elements. That's why we're transforming it into hashset forassert_eq``` macro.

Using iterator adaptor

Common pattern is to iterate through collection and push it elements to MaxValues like this: ```rust use max_values::MaxValues;

fn main() { let arr = [0, 1, 5, 7, 2, 3];

let values = MaxValues::<i32, 3>::new();
for i in arr {
    values.push(i);
}

assert_eq!(values.into_iter().collect::<HashSet<_>>, HashSet::from([3, 5, 7]));

} ```

That's why MaxValues implements FromIterable<T>: rust let arr = [0, 1, 5, 7, 2, 3]; let values = MaxValues::<i32, 3>::from_iter(arr.into_iter()); assert_eq!(values.into_iter().collect::<HashSet<_>>(), HashSet::from([3, 5, 7]));

Also, you can use iterator extension trait MaxValuesIterExt to iterate over max values of iterator: ```rust use max_values::MaxValuesIterExt;

fn main() { let values = [1, 5, 2, 4, 7, 10, 0, 15, 3]; asserteq!( values.intoiter().max_values::<3>().collect::>(), HashSet::from([7, 10, 15]) ); } ```