#排序 #版本 #GNU #算法

vsort

GNU版本排序Rust实现

2个不稳定版本

0.2.0 2023年8月4日
0.1.0 2023年6月30日

#1414 in 算法

Download history 628/week @ 2024-04-08 736/week @ 2024-04-15 759/week @ 2024-04-22 711/week @ 2024-04-29 523/week @ 2024-05-06 536/week @ 2024-05-13 466/week @ 2024-05-20 483/week @ 2024-05-27 478/week @ 2024-06-03 510/week @ 2024-06-10 635/week @ 2024-06-17 412/week @ 2024-06-24 445/week @ 2024-07-01 408/week @ 2024-07-08 392/week @ 2024-07-15 499/week @ 2024-07-22

1,797 每月下载次数
用于 lsd

MIT 协议

22KB
385

TESTS License: MIT Latest version

vsort

A Rust库,实现了GNU版本排序算法。它遵循此处给出的规范这里

安装

cargo add vsort

为什么选择vsort?

其他版本排序实现与GNU规范不匹配,有些甚至缺少测试。目标是尽可能接近核心工具实现的行为。如果您发现任何差异,请打开一个问题。

为什么不使用FFI?

如果您需要与GNU版本排序完全一致,FFI可能是您的最佳选择。如果您想在Rust中使用它们的算法,这里就是:)

用法

use vsort::{compare, sort};

fn main() {
    let mut file_names = vec![
        "a.txt",
        "b 1.txt",
        "b 10.txt",
        "b 11.txt",
        "b 5.txt",
        "Ssm.txt",
    ];

    // Pass to sort_by
    file_names.sort_by(|a, b| compare(a, b));
    assert_eq!(
        file_names,
        vec!["Ssm.txt", "a.txt", "b 1.txt", "b 5.txt", "b 10.txt", "b 11.txt"]
    );

    let mut file_names = vec![
        "a.txt",
        "b 1.txt",
        "b 10.txt",
        "b 11.txt",
        "b 5.txt",
        "Ssm.txt",
    ];
    // Alternatively
    sort(&mut file_names);
    assert_eq!(
        file_names,
        vec!["Ssm.txt", "a.txt", "b 1.txt", "b 5.txt", "b 10.txt", "b 11.txt"]
    );
}

无运行时依赖