topk/
lib.rs

1/*!
2TopK algorithm implementation in Rust.
3
4This crate currently provides the [Filtered Space-Saving algorithm](https://doi.org/10.1016/j.ins.2010.08.024).
5
6Version numbers follow the [semver](https://semver.org/) convention.
7
8### Example
9
10```rust
11use topk::FilteredSpaceSaving;
12
13let mut topk = FilteredSpaceSaving::new(3);
14topk.insert("1", 10);
15topk.insert("2", 20);
16topk.insert("3", 1);
17topk.insert("4", 2);
18let topk_result = topk.into_sorted_vec();
19assert_eq!(topk_result.len(), 3);
20assert_eq!(topk_result[0].0, "2");
21```
22
23merging space-saving results is supported:
24
25```rust
26use topk::FilteredSpaceSaving;
27
28let mut fss1 = FilteredSpaceSaving::new(3);
29fss1.insert("1", 10);
30fss1.insert("2", 20);
31fss1.insert("3", 2);
32fss1.insert("4", 1);
33fss1.insert("4", 3);
34fss1.insert("5", 3);
35let mut fss2 = FilteredSpaceSaving::new(3);
36fss2.insert("1", 10);
37fss2.insert("2", 20);
38fss2.insert("3", 20);
39fss2.insert("4", 10);
40fss1.merge(&fss2).unwrap();
41let result = fss1.into_sorted_vec();
42assert_eq!(result[0].0, "2");
43```
44 */
45
46mod topk;
47
48pub use self::topk::*;