1 个稳定版本
使用旧的 Rust 2015
1.0.0 | 2018年11月15日 |
---|
#712 在 文件系统
172,772 每月下载量
在 522 个 Crates 中使用 (12 直接)
7KB
75 行
common-path
一个小型crate,提供确定一组路径之间公共前缀(如果有的话)的函数
安装
在你的 Cargo.toml
中,将此添加到 [dependencies]
部分
common-path = "1"
并在你的crate根目录中添加
// src/lib.rs, src/main.rs, etc
extern crate common_path;
使用方法
提供了两个函数:common_path
和 common_path_all
extern crate common_path;
use std::path::Path;
fn main() {
let a = Path::new("/a/b/c/d");
let b = Path::new("/a/b/e/f");
let prefix = common_path::common_path(a, b); // => Some(Path::new("/a/b"))
}
如果你需要查找超过2个路径的公共前缀,common_path_all
可以接受任何可以转换为 Path
引用迭代器的对象
extern crate common_path;
use std::path::Path;
fn main() {
let a = Path::new("/a/b/c/d");
let b = Path::new("/a/b/e/f");
let c = Path::new("/a/g/h/i");
let prefix = common_path::common_path_all(vec![a, b, c]); // => Some(Path::new("/a"))
}
注意事项
此库不尝试规范路径,因此理论上应该具有公共前缀的2个路径可能会被忽略,除非它们在之前规范化。
例如,/foo/bar/baz
和 /foo/quux/../bar/baz/quuux
应该有公共前缀 /foo/bar/baz
,一旦它们被规范化,但在这个形式下,此库将返回前缀 /foo
。如果你在它们之前调用 Path::canonicalize
,你将得到“正确”的前缀,但 canonicalize
将在路径实际不存在时返回错误,因此我想避免在此库中使用它。