4个版本 (1个稳定版)
1.0.0 | 2024年1月2日 |
---|---|
0.3.1 | 2023年1月13日 |
0.3.0 |
|
0.2.0 | 2023年1月13日 |
0.1.0 | 2023年1月13日 |
#508 在 Rust模式
每月236次下载
被 2 crates 使用
7KB
pathbuf
pathbuf
是一个简单的crate,它提供了一个名为pathbuf
的宏,用于方便地构造Rust的PathBuf
类型。
示例
use pathbuf::pathbuf;
use std::path::PathBuf;
fn main() {
let p = pathbuf!["hello", "filename.txt"];
let expected = {
let mut temp = PathBuf::new();
temp.push("hello");
temp.push("filename.txt");
temp
};
assert_eq!(p, expected);
}
许可证
pathbuf
遵循Apache 2.0许可证,并且是Hipcheck中找到的hc_pathbuf
crate的一个复制品,从Hipcheck中提取出来,作为一个独立的crate进行重用。
lib.rs
:
pathbuf
提供了一个宏,名为pathbuf!
,它提供了类似于vec!
的语法来构建PathBuf
。
示例
#
fn do_something(dir: &Path) {
let file_name = pathbuf![dir, "filename.txt"];
if file_name.exists() {
// do something...
}
}
安全性
由于宏依赖于std::path::PathBuf::push
,因此没有针对路径遍历攻击的保护。因此,任何路径元素都不得未经验证或净化而使用不受信任的用户输入。
UNIX系统上的路径遍历/覆盖示例
#
let user_input = "/etc/shadow";
assert_eq!(pathbuf!["/tmp", user_input], PathBuf::from("/etc/shadow"));