4个版本 (1个稳定版)

1.0.0 2024年1月2日
0.3.1 2023年1月13日
0.3.0 2023年1月13日
0.2.0 2023年1月13日
0.1.0 2023年1月13日

#508Rust模式

Download history 4/week @ 2024-04-06 118/week @ 2024-05-04 13/week @ 2024-05-11 93/week @ 2024-05-18 83/week @ 2024-05-25 91/week @ 2024-06-01 39/week @ 2024-06-08 158/week @ 2024-06-15 109/week @ 2024-06-22 99/week @ 2024-06-29 103/week @ 2024-07-06 25/week @ 2024-07-13 7/week @ 2024-07-20

每月236次下载
2 crates 使用

Apache-2.0

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"));

无运行时依赖