5 个版本
0.9.4 | 2024 年 4 月 1 日 |
---|---|
0.9.3 | 2024 年 3 月 15 日 |
0.9.2 | 2023 年 9 月 10 日 |
0.9.1 | 2023 年 4 月 27 日 |
0.9.0 | 2023 年 4 月 27 日 |
#583 in 文件系统
55 每月下载量
在 2 个 Crates 中使用 (通过 scandir)
77KB
1.5K SLoC
jwalk-meta
文件系统遍历。
- 使用 rayon 进行并行处理
- 以排序顺序流式传输条目
- 自定义排序/过滤/跳过/状态
这是对 https://github.com/Byron/jwalk 的分支。该项目添加了可选的收集元数据,以在以后需要时提高性能。
使用方法
将此内容添加到您的 Cargo.toml
[dependencies]
jwalk-meta = "0.9"
了解更多: docs.rs/jwalk-meta
示例
递归遍历 "foo" 目录,按名称排序
use jwalk_meta::{WalkDir};
for entry in WalkDir::new("foo").sort(true) {
println!("{}", entry?.path().display());
}
灵感
此库受 walkdir
和 ignore
的启发。它试图结合 ignore
的并行性和 walkdir
的流式迭代器 API。一些代码和注释直接来自 walkdir
。
为什么使用这个库?
当您想要流式传输排序后的结果时,此库特别有用。在我的测试中,它对于带有元数据的排序结果的速度大约是 walkdir
的 4 倍。此外,此库的 process_read_dir
回调允许您在生成之前任意排序/过滤/跳过/状态条目。
为什么不用这个库?
目录遍历已经相当快了。如果您不需要此库的速度,则 walkdir
提供了一个更小且经过更多测试的单线程实现。
此库的并行性发生在目录级别。在遍历具有许多目录的深层文件系统时,它将有所帮助。但它不会在读取具有许多文件的单个目录时有所帮助。
基准测试
基准测试 比较此库与 walkdir
和 ignore
。
依赖关系
~1.5MB
~27K SLoC