Crates.io | path_macro |
lib.rs | path_macro |
version | 1.0.0 |
source | src |
created_at | 2020-04-01 03:05:21.255051 |
updated_at | 2020-04-01 03:05:21.255051 |
description | A macro to join path components using `/` |
homepage | |
repository | https://github.com/zertosh/path_macro |
max_upload_size | |
id | 225056 |
size | 19,530 |
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.