1 stable release
1.0.0 | Apr 1, 2020 |
---|
#604 in Filesystem
4,324 downloads per month
Used in 4 crates
8KB
70 lines
path_macro
This library provides path!
, a macro to join path components using /
.
[dependencies]
path_macro = "1.0"
Details
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"));
}
Prior Art
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.
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.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.