Crate macron_path

Crate macron_path 

Source
Expand description

githubcrates-iodocs-rs

§PathBuf Macro

A macro for ergonomic and safe construction of file and directory paths in Rust, with context-aware resolution.

  • Supports both string literals and formatted paths with arguments.
  • Automatically determines whether to allow a path relative to the current working directory, the executable directory, or the user data directory.

P.S. More useful macros are available in the macron package.

§Features:

  • Empty call: path!() returns PathBuf::new().
  • Executable prefix $: path!("$")std::env::current_exe().
  • Executable directory $/: path!("$/foo/bar")current_exe().parent().join("foo/bar").
  • Home directory ~/: path!("~/foo/bar")$HOME/foo/bar (USERPROFILE on Windows).
  • User data directory %/:
    OSDefault Directory
    WindowsC:/Users/User/AppData/Roaming/
    macOS~/Library/Application Support/
    Linux~/.local/share
  • Formatting: path!("foo/{arg1}/{}", arg2).
  • Expressions: path!(some_path_var).
  • Plain paths: path!("foo/bar").

§Examples:

use macron_path::path;

// empty PathBuf:
let empty = path!();

// plain path (relative to CWD):
let relative = path!("foo/bar");

// executable path:
let exe_path = path!("$");

// executable directory:
let exe_dir_path = path!("$/config.toml");

// home directory:
let home_path = path!("~/Documents/file.txt");

// user data directory:
let data_path = path!("%/myapp/settings.json");

// formatting:
let user_path = path!("users/{}/docs", "alice");
let dynamic = path!("dir/{}", some_var.to_string());

§Licensing:

Distributed under the MIT license.

§Feedback:

You can contact me via GitHub or send a message to my Telegram @fuderis. This library is actively evolving, and your suggestions and feedback are always welcome!

P.S. More useful macros are available in the macron package.

Macros§

path
Creates a new instance of PathBuf