3 个版本 (稳定版)

使用旧的 Rust 2015

1.0.1 2023年2月24日
0.1.0 2018年11月6日

#30文件系统 分类中

Download history 64075/week @ 2024-04-22 63225/week @ 2024-04-29 64574/week @ 2024-05-06 70633/week @ 2024-05-13 76479/week @ 2024-05-20 72224/week @ 2024-05-27 66914/week @ 2024-06-03 84402/week @ 2024-06-10 82795/week @ 2024-06-17 73231/week @ 2024-06-24 98814/week @ 2024-07-01 109952/week @ 2024-07-08 105891/week @ 2024-07-15 90520/week @ 2024-07-22 100448/week @ 2024-07-29 104704/week @ 2024-08-05

每月下载量 413,651
473 Crates 中使用 (直接使用 119)

MIT/Apache

10KB
145

path-clean

crates.io version build status docs.rs docs license

安装

cargo add path-clean

使用

use std::path::PathBuf;
use path_clean::{clean, PathClean};
assert_eq!(clean("hello/world/.."), PathBuf::from("hello"));
assert_eq!(
  PathBuf::from("/test/../path/").clean(),
  PathBuf::from("/path")
);

关于

path-clean 是 Plan 9 C 库中的 cleanname 程序的 Rust 版本,类似于 Go 标准库中的 path.Clean。它的工作原理如下

  1. 将多个斜杠减少到单个斜杠。
  2. 消除路径名称元素 .(当前目录)。
  3. 消除路径名称元素 ..(父目录)以及在其之前的不带 ... 的元素。
  4. 消除以 .. 开头的根路径元素,即将路径开头的 /.. 替换为 /
  5. 保持非根路径开头的 .. 元素不变。

如果此过程的结果是空字符串,则返回表示当前目录的字符串 "."

它以词法方式执行此转换,而不接触文件系统。因此,它不会执行任何符号链接解析或绝对路径解析。更多信息请参阅 "正确处理点号和点号"

为了方便,公开了 PathClean trait,并为 std::path::PathBuf 实现。

许可证

MITApache-2.0

无运行时依赖项