#file-path #relative-path #directory-tree #path #directory-structure #root-directory #absolute

bin+lib dir_indexer

该项目是一个用于在目录树中索引和检索文件路径的Rust库

2个版本

0.0.2 2023年7月6日
0.0.1 2023年6月30日

#801 in 文件系统

Download history 291/week @ 2024-03-14 261/week @ 2024-03-21 511/week @ 2024-03-28 332/week @ 2024-04-04 379/week @ 2024-04-11 391/week @ 2024-04-18 450/week @ 2024-04-25 460/week @ 2024-05-02 546/week @ 2024-05-09 480/week @ 2024-05-16 277/week @ 2024-05-23 472/week @ 2024-05-30 643/week @ 2024-06-06 714/week @ 2024-06-13 325/week @ 2024-06-20 570/week @ 2024-06-27

2,382 每月下载量
用于 forc-doc

MIT 许可证

35KB
403

目录索引器

目录索引器是一个Rust库,提供了索引和检索目录结构信息的功能。它允许您从指定的根路径获取相对和绝对文件路径的集合,以及相对和绝对路径之间的映射。

特性

目录索引器库提供了以下特性

  • 目录索引:轻松索引目录结构并遍历树以访问文件和目录信息。

  • 相对和绝对路径:从指定的根路径检索相对或绝对文件和目录路径的集合。

  • 路径映射:生成相对和绝对文件路径,以及相对和绝对目录路径之间的映射。

  • 错误处理:该库提供了用于处理各种场景的错误类型,例如既不是文件也不是目录的路径或无法访问某些路径的权限不足。

  • 灵活使用:该库设计得非常灵活,可以集成到不同的Rust项目中。

结构体

DirNode

DirNode 结构体表示目录树中的一个节点。它有以下字段

  • entry_ (PathBuf):节点的相对路径。
  • child_entry_ (HashSet):子节点集合。

DirNode 结构体提供了遍历和操作目录树的方法

  • from(root_path: &PathBuf, rl_path: &PathBuf) -> Result<DirNode, DirIndexerErr>:从指定的根路径和相对路径创建一个 DirNode
  • add_rl_file_path(&self, root_path: &mut HashSet<PathBuf>): 将相对文件路径添加到指定的集合中。
  • add_rl_dir_path(&self, root_path: &mut HashSet<PathBuf>): 将相对目录路径添加到指定的集合中。
  • add_ab_file_path(&self, root_path: &mut HashSet<PathBuf>): 将绝对文件路径添加到指定的集合中。
  • add_ab_dir_path(&self, root_path: &mut HashSet<PathBuf>): 将绝对目录路径添加到指定的集合中。
  • map_ab2rl_file_path(&self, root_path: &mut HashMap<PathBuf><PathBuf>): 将绝对文件路径映射到相对文件路径。
  • map_ab2rl_dir_path(&self, root_path: &mut HashMap<PathBuf><PathBuf>): 将绝对目录路径映射到相对目录路径。
  • map_rl2ab_file_path(&self, root_path: &mut HashMap<PathBuf><PathBuf>): 将相对文件路径映射到绝对文件路径。
  • map_rl2ab_dir_path(&self, root_path: &mut HashMap<PathBuf><PathBuf>): 将相对目录路径映射到绝对目录路径。
  • relative_entry_name(self) -> PathBuf:返回相对入口名称。
  • absolute_entry_name(self, root_path: PathBuf) -> PathBuf:返回绝对入口名称。

DirIndexerErr

DirIndexerErr 枚举表示在目录索引过程中可能发生的潜在错误。它有以下变体:

  • NotFileAndDir:表示路径既不是文件也不是目录。
  • LackPermission(PathBuf):表示没有访问指定路径的权限。

函数

目录索引器库提供了以下函数,以便轻松访问目录索引功能:

  • get_relative_file_paths_set(root_path: PathBuf) -> HashSet<PathBuf>:从指定的根路径检索一组相对文件路径。
  • get_relative_dir_paths_set(root_path: PathBuf) -> HashSet<PathBuf>:从指定的根路径检索一组相对目录路径。
  • get_absolute_file_paths_set(root_path: PathBuf) -> HashSet<PathBuf>:从指定的根路径检索一组绝对文件路径。
  • get_absolute_dir_paths_set(root_path: PathBuf) -> HashSet<PathBuf>:从指定的根路径检索一组绝对目录路径。
  • `get_rl2ab_file_paths_map(root_path: PathBuf) -> HashMap<PathBuf, PathBuf>`:从指定的根路径检索相对文件路径到绝对文件路径的映射。

...

  • ...
  • ...
  • ...

用法

要使用目录索引库,请将其作为依赖项添加到您的 Cargo.toml 文件中

[dependencies]
dir_indexer = "0.1.0"

然后,在Rust代码中导入必要的模块

use std::path::PathBuf;
use std::collections::{HashSet, HashMap};
use dir_indexer::{get_relative_file_paths_set, get_absolute_file_paths_set};

现在您可以调用可用函数以检索目录信息

fn main() {
    let root_path = PathBuf::from("/path/to/directory");

    // Get a set of relative file paths
    let relative_files = get_relative_file_paths_set(root_path.clone());
    println!("Relative File Paths: {:?}", relative_files);

    // Get a set of absolute file paths
    let absolute_files = get_absolute_file_paths_set(root_path);
    println!("Absolute File Paths: {:?}", absolute_files);
}

此示例演示了如何从一个指定的根目录中检索一组相对文件路径和一组绝对文件路径。

许可证

此项目采用 MIT 许可证

无运行时依赖