This library provides path!
, a macro to join path components using /
.
[dependencies]
path_macro = "1.0"
Python's pathlib.Path
provides an egonomic API for composing paths out
of path components by overloading the division operator:
$ python3
>>> from pathlib import Path
>>> p = Path('a')
>>> q = p / 'b' / 'c'
>>> q
PosixPath('a/b/c')
The path!
macro provides a similar API for Rust paths without having
to overload Path
or PathBuf
.
use std::path::Path;
use path_macro::path;
fn main() {
let p = path!(Path::new("a") / "x" / "y" / "z");
#[cfg(unix)]
assert_eq!(p, Path::new("a/x/y/z"));
#[cfg(windows)]
assert_eq!(p, Path::new("a\\x\\y\\z"));
}
In rust-lang/rust#62989, the idea of implementing Div
for Path
and
PathBuf
was sidestepped by pointing out that the path!
macro existed
in dtolnay/trybuild:src/path.rs. In dtolnay/trybuild#46, the library
author expressed a lack of interest in pulling out the macro into a
standalone crate and encouraged others to do it. This crate is that.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.