2 unstable releases

0.4.0 Aug 25, 2023
0.3.10 Dec 19, 2022
0.2.2 May 12, 2022
0.1.6 May 4, 2022

#1899 in Algorithms

Download history 224/week @ 2024-07-27 3/week @ 2024-08-03 100/week @ 2024-08-10 70/week @ 2024-08-17 32/week @ 2024-08-24 91/week @ 2024-08-31 1/week @ 2024-09-07 81/week @ 2024-09-21 72/week @ 2024-09-28 16/week @ 2024-10-05 61/week @ 2024-10-12 93/week @ 2024-10-19 50/week @ 2024-10-26 87/week @ 2024-11-02 7/week @ 2024-11-09

256 downloads per month

MIT license

25KB
321 lines

Top N Set

Crates.io Crates.io License Docs

This crate provides a topset which selects a given number of greatest items. The criterium used to sort the items could be specified as a closure. It is based internally on a binary heap with a fixed size.

The struct TopSet could be used directly or through the trait TopSetReducing which automatically extend the iterator trait.

Note: the returned items are unsorted.

use topset::TopIter;


fn main()
{
    let items = vec![4, 5, 8, 3, 2, 1, 4, 7, 9, 8];
    
    // getting the four greatest integers (repeating allowed)
    items.iter().cloned()
            .topset(4, i32::gt)
            .into_iter()
            .for_each(|x| eprintln!("in the top 4: {}", x));

    // getting the four smallest integers
    // (we just need to reverse the comparison function)
    items.topset(4, i32::lt)
            .into_iter()
            .for_each(|x| eprintln!("in the last 4: {}", x));
}

will produce (possibly in a different order):

in the top 4: 7
in the top 4: 8
in the top 4: 9
in the top 4: 8
in the last 4: 4
in the last 4: 3
in the last 4: 1
in the last 4: 2

No runtime deps