1 个不稳定版本
0.1.0 | 2023年2月18日 |
---|
#1304 在 文件系统
每月24次下载
用于 brush-shell
44KB
945 行
dir-cmp
这个 Rust 库旨在提供方便的函数来比较两个文件树。
库
用法
//define options
let diff_options = Options {
ignore_left_only: false,
ignore_right_only: false,
filter: None,
ignore_equal: false,
recursive: true,
};
//get dirs to compare
let left_dir = Path::new("./foo");
let right_dir = Path::new("./bar");
//compare
let result = compare_dirs(&left_dir, &right_dir, diff_options);
过滤器
为了黑名单(exclude
)或白名单(include
)任何文件夹或文件名,可以在比较选项中添加一个过滤器。过滤器由一系列正则表达式组成。
// define filter to ignore ".git" directory
let regex = Regex::new(r"\.git$").unwrap();
let filter = Filter::Exclude(vec![regex]);
//define options
let diff_options = Options {
ignore_left_only: false,
ignore_right_only: false,
filter: Some(filter),
ignore_equal: false,
recursive: true,
};
//get dirs to compare
let left_dir = Path::new("./foo");
let right_dir = Path::new("./bar");
//compare
let result = compare_dirs(&left_dir, &right_dir, diff_options);
完整版与轻量版
compare_dirs
函数实现了两种版本:完整版和轻量版。区别在于 full::compare_dirs
还比较文件内容,而 light::compare_dirs
只比较名称/路径。
命令行界面
可以使用此仓库中提供的命令行界面测试库。它受 diff
启发,但只覆盖基本功能。
用法
dir-cmp -h
dir-cmp -r <LEFT> <RIGHT>
性能
为了评估此库的速度,我们可以将其与 diff
进行比较。
一种简单的方法是简单地将此仓库与自身进行比较
time diff -r . .
// 0.01s user 0.19s system 99% cpu 0.209 total
time dir-cmp -r . .
// 0.26s user 0.46s system 75% cpu 0.945 total
结果清楚地表明,还有很多改进的空间。
依赖项
~4.5–6.5MB
~109K SLoC