#directory #parallel #walk #recursion #iterator #walk-dir

jwalk-meta

并行执行文件系统遍历,并输出排序后的结果

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 文件系统

Download history 4/week @ 2024-05-16 3/week @ 2024-05-23 2/week @ 2024-05-30 6/week @ 2024-06-06 6/week @ 2024-06-13 7/week @ 2024-06-20 2/week @ 2024-06-27 3/week @ 2024-07-04 2/week @ 2024-07-11 22/week @ 2024-07-25 9/week @ 2024-08-01 24/week @ 2024-08-15

55 每月下载量
2 个 Crates 中使用 (通过 scandir)

MIT 许可证

77KB
1.5K SLoC

jwalk-meta

文件系统遍历。

  • 使用 rayon 进行并行处理
  • 以排序顺序流式传输条目
  • 自定义排序/过滤/跳过/状态

这是对 https://github.com/Byron/jwalk 的分支。该项目添加了可选的收集元数据,以在以后需要时提高性能。

Build Status

使用方法

将此内容添加到您的 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());
}

灵感

此库受 walkdirignore 的启发。它试图结合 ignore 的并行性和 walkdir 的流式迭代器 API。一些代码和注释直接来自 walkdir

为什么使用这个库?

当您想要流式传输排序后的结果时,此库特别有用。在我的测试中,它对于带有元数据的排序结果的速度大约是 walkdir 的 4 倍。此外,此库的 process_read_dir 回调允许您在生成之前任意排序/过滤/跳过/状态条目。

为什么不用这个库?

目录遍历已经相当快了。如果您不需要此库的速度,则 walkdir 提供了一个更小且经过更多测试的单线程实现。

此库的并行性发生在目录级别。在遍历具有许多目录的深层文件系统时,它将有所帮助。但它不会在读取具有许多文件的单个目录时有所帮助。

基准测试

基准测试 比较此库与 walkdirignore

依赖关系

~1.5MB
~27K SLoC