13 个版本 (7 个破坏性更新)
0.8.1 | 2022 年 12 月 15 日 |
---|---|
0.7.0 | 2022 年 12 月 15 日 |
0.6.0 | 2021 年 1 月 6 日 |
0.5.2 |
|
0.3.0 | 2019 年 2 月 21 日 |
#34 in 文件系统
228,876 每月下载量
用于 428 个 Crates (直接使用 79 个)
66KB
1K SLoC
jwalk
文件系统遍历。
- 使用 rayon 并行执行
- 以排序顺序流式传输条目
- 自定义排序/过滤/跳过/状态
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
jwalk = "0.5"
了解更多: docs.rs/jwalk
示例
递归遍历 "foo" 目录,按名称排序
use jwalk::{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
~25K SLoC