macro_rules! app_path {
($path:expr) => { ... };
($path:expr, env = $env_var:expr) => { ... };
($path:expr, override = $override_expr:expr) => { ... };
($path:expr, fn = $override_fn:expr) => { ... };
}Expand description
Convenience macro for creating AppPath instances with optional environment variable overrides.
This macro provides a more ergonomic way to create AppPath instances, especially when
dealing with environment variable overrides.
§Syntax
app_path!(path)- Simple path creation (equivalent toAppPath::new(path))app_path!(path, env = "VAR_NAME")- With environment variable overrideapp_path!(path, override = expression)- With any optional override expressionapp_path!(path, fn = function)- With function-based override logic
§Examples
use app_path::{app_path, AppPath};
// Simple usage
let config = app_path!("config.toml");
assert_eq!(config.file_name().unwrap(), "config.toml");
// Environment variable override
let data_dir = app_path!("data", env = "DATA_DIR");
// Custom override expression
let log_file = app_path!("app.log", override = std::env::args().nth(1));
// Function-based override
let config_dir = app_path!("config", fn = || {
std::env::var("XDG_CONFIG_HOME")
.or_else(|_| std::env::var("HOME").map(|h| format!("{h}/.config")))
.ok()
});