2个不稳定版本
0.2.0 | 2023年8月4日 |
---|---|
0.1.0 | 2023年6月30日 |
#1414 in 算法
1,797 每月下载次数
用于 lsd
22KB
385 行
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"]
);
}