37 个版本

0.9.2 2024年7月25日
0.9.0 2024年2月16日
0.8.1 2023年10月16日
0.8.0 2023年6月1日
0.2.0 2021年3月7日

#250文件系统

Download history 2/week @ 2024-06-02 102/week @ 2024-06-09 15/week @ 2024-06-16 100/week @ 2024-06-30 1/week @ 2024-07-07 118/week @ 2024-07-21 233/week @ 2024-07-28 1/week @ 2024-08-04 9/week @ 2024-08-11

每月下载量 361

WTFPL 许可证

48KB
616

Dowser

docs.rs changelog
crates.io ci deps.rs
license contributions welcome

Dowser 是另一个针对 Unix/Rust 的快速、递归文件查找库。它在多个方面与 Walkdir 和其他类似库有所不同

  • 它不仅限于一个根目录;可以一次性加载和遍历任意数量的文件和目录路径;
  • 符号链接和隐藏目录与其他一样被遍历,包括跨设备;
  • 匹配的文件路径在输出之前被规范化并去重;

如果这些功能听起来不错,这个库可能是一个不错的选择。

另一方面,Dowser 优化了文件搜索;迭代器爬取但不输出目录路径,如果您也需要目录路径,这可能是个问题。哈哈。

安装

Cargo.toml 中的 dependencies 部分添加 dowser,例如

[dependencies]
dowser = "0.9.*"

示例

您只需将以下种子方法之一或多个与 Dowser::default 链接即可

  • Dowser::with_path / Dowser::with_paths
  • Dowser::without_path / Dowser::without_paths

从那里,您可以应用任何 Iterator 方法,或者立即使用 Dowser::into_vecDowser::into_vec_filtered 收集结果。

use dowser::Dowser;
use std::path::PathBuf;

// Return all files under "/usr/share/man".
let files1: Vec::<PathBuf> = Dowser::default()
    .with_path("/usr/share/man")
    .collect();

// Same as above, but slightly faster.
let files2: Vec::<PathBuf> = Dowser::default()
    .with_path("/usr/share/man")
    .into_vec();

assert_eq!(files1.len(), files2.len());

// Return only Gzipped files using callback filter.
let files1: Vec::<PathBuf> = Dowser::default()
    .with_path("/usr/share/man")
    .filter(|p|
        p.extension().map_or(
            false,
            |e| e.eq_ignore_ascii_case("gz")
        )
    )
    .collect();

// Same as above, but slightly faster.
let files2: Vec::<PathBuf> = Dowser::default()
    .with_path("/usr/share/man")
    .into_vec_filtered(|p|
        p.extension().map_or(
            false,
            |e| e.eq_ignore_ascii_case("gz")
        )
    );

assert_eq!(files1.len(), files2.len());

许可证

另请参阅: CREDITS.md

版权所有 © 2024 Blobfolio, LLC <[email protected]>

本作品是免费的。您可以在 Do What The Fuck You Want To Public License,Version 2 的条款下重新分发或修改它。

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004

Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>

Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. You just DO WHAT THE FUCK YOU WANT TO.

依赖项

~1MB
~17K SLoC