path_macro 1.0.0

A macro to join path components using `/`
Documentation
  • Coverage
  • 50%
    1 out of 2 items documented1 out of 1 items with examples
  • Size
  • Source code size: 19.16 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.05 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • zertosh/path_macro
    6 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • zertosh

path_macro

Build Status Latest Version Rust Documentation

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