This crate provides function-like macros to check or operate paths relative to CARGOMANIFESTDIR at compile time.
```rust
println!(path!("Cargo.toml")); println!(path!("src/lib.rs")); println!(path!("src", "lib.rs")); println!(path!("src", "lib.rs", "/bin")); println!(path!("/usr"));
println!(existpath!("Cargo.toml")); println!(directorypath!("src")); println!(notdirectorypath!("Cargo.toml")); println!(file_path!("Cargo.toml"));
println!(relativepath!("Cargo.toml")); println!(directoryrelativepath!("src")); println!(notdirectoryrelativepath!("Cargo.toml")); println!(filerelativepath!("Cargo.toml"));
println!(getfilename!("src/lib.rs")); println!(getfilename!(default = "main.rs", "/")); println!(getfilestem!("src/lib.rs")); println!(getfilestem!(default = "lib", "/")); println!(getextension!("src/lib.rs")); println!(getextension!(default = "rs", "src/lib")); println!(getparent!("src/lib.rs")); println!(getparent!(default = "/home", "/"));
{ println!(mimeguess!("src/lib.rs")); println!(mimeguess!(default = "application/octet-stream", "Cargo.lock")); }
// The tuple
feature lets these macros above support to input nested literal string tuples, which is useful when you want to use these macros inside a macro_rule!
macro and concatenate with other literal strings.
// $x:expr
matchers can be used in these macros thus.
{ println!(path!(("foo",))); println!(path!(("foo", "bar"))); println!(path!("a", ("foo", "bar"))); println!(path!(("foo", "bar"), "a")); println!(path!(("foo", "bar"), ("a", "b"))); println!(path!(("foo", "bar", ("a", "b")), ("c", "d"))); } ```
https://crates.io/crates/manifest-dir-macros
https://docs.rs/manifest-dir-macros