Crate pathbuf

source ·
Expand description

pathbuf provides a single macro, pathbuf!, which gives a vec!-like syntax for constructing PathBufs.

Example

fn do_something(dir: &Path) {
    let file_name = pathbuf![dir, "filename.txt"];

    if file_name.exists() {
        // do something...
    }
}

Security

As the macro relies on std::path::PathBuf::push there is also no protection against path traversal attacks. Therefore no path element shall be untrusted user input without validation or sanitisation.

An example for a path traversal/override on an UNIX system:

let user_input = "/etc/shadow";
assert_eq!(pathbuf!["/tmp", user_input], PathBuf::from("/etc/shadow"));

Macros