4 个版本
0.4.1 | 2019年10月18日 |
---|---|
0.4.0 | 2019年10月17日 |
0.3.1 | 2019年10月16日 |
0.3.0 | 2019年10月16日 |
#1466 在 文件系统
33KB
709 行
智能 PathBuf
rust 的 PathBuf
的包装器,增加了用于操作路径的便捷方法。 SmartPathBuf
具有与 PathBuf
相同的所有功能,并且更多,它是一个扩展,并将始终与 PathBuf
保持功能一致性。 SmartPathBuf
将添加一些开销,因为它需要保留更多信息,我将努力将其保持在尽可能低。
用法
smart-pathbuf = "0.4"
现在仅在夜间构建中存在的 PathBuf
方法现在位于功能标志之后,可以启用。
smart-pathbuf = { version = "0.3", features = ["unstable"] }
随着 std 库的稳定,这个 crate 也将稳定这些功能。
示例
不再需要多次调用 pop
。
use smart_path::SmartPathBuf;
let dir = std::env::current_dir().expect("failed");
let mut s_path = SmartPathBuf::from(&dir);
//or just s_path = SmartPathBuf::from(&dir);
// s_path.push(&dir);
s_path.push("to/file");
do_something(&s_path); // "current/dir/to/file"
// remove segments up to the initial path given
s_path.initial();
// or s_path.pop_last();
// "current/dir"
s_path.push("another/file");
do_more(&s_path);
SmartPathBuf
可以使用索引和范围进行操作。
let mut path = SmartPathBuf::from("hello/world/bye");
let p = path.range(..path.len() - 1);
assert_eq!(p.as_path(), PathBuf::from("hello/world").as_path());
或者从中间切片到末尾 SmartPathBuf
将处理切片绝对路径,返回非绝对路径。