#vec #ranking #rank #standing #ex-aequo

leaderboard

为 Vec 提供排行榜功能,如带有 ex aequos 的排名

3 个版本

0.1.2 2023 年 5 月 1 日
0.1.1 2023 年 4 月 19 日
0.1.0 2023 年 4 月 19 日

#12 in #ranking

每月 32 次下载

Unlicense

7KB
137

排行榜

一个 Rust crate,提供 2 个对 Vec 有用的排行榜函数

  • vec.iter_ranked():遍历一个排序后的 vec,将相等的元素分组(ex aequos)
  • vec.iter_sections(ranges):遍历由 vec 的范围定义的域上的 vec

示例

以下是如何一起使用这两个函数来显示带有 ex aequos 的前 3 名和后 3 名排名的示例

fn test() {
    let scores = vec![
        150, 142, 138, 138, 135, 120, 101, 83, 66, 61, 61
    ];
    let ranking: Vec<_> = scores.iter_ranked().collect();
    let last = ranking.len();
    let mut rank = 1;
    for view in ranking.iter_sections(vec![0..3, last-3..last]) {
        if let View::Skipped(offset) = view {
            println!("...");
            rank += offset
        } else {
            println!("{rank}. {view:?}");
            rank += 1
        };
    }
}

输出

1. Item([150])
2. Item([142])
3. Item([138, 138])
...
7. Item([83])
8. Item([66])
9. Item([61, 61])

无运行时依赖