4 releases
0.1.3 | Apr 23, 2022 |
---|---|
0.1.2 | Dec 8, 2021 |
0.1.1 | Dec 8, 2021 |
0.1.0 | Dec 8, 2021 |
#691 in Procedural macros
2,901 downloads per month
Used in 18 crates
(7 directly)
12KB
229 lines
🚨 macropol
Ergonomic string literal interpolation in macro definitions.
Replaces metavariables ($foo
) and arbitrary expressions in string literals (including doc comments) and concatenates them with surrounding text fragments with core::concat!
.
#[macropol::macropol]
macro_rules! mymacro {
($count:expr, $name:expr, fn $func:ident()) => {
/// Returns `"$$ $name, ${stringify!($count)} to beam up"`.
fn $func() -> &'static str {
"$$ $name, $&count to beam up"
}
};
}
// The above definition expands to:
//
// macro_rules! mymacro {
// ($count:expr, $name:expr, fn $func:ident()) => {
// #[doc = concat!("Returns `\"$ ", $name, ", ",
// stringify!($count), " to beam up\"`.")]
// fn func() -> &'static str {
// concat!("$ ", $name, ", ",
// stringify!($count), " to beam up")
// }
// };
// }
//
mymacro!(3, "Scotty", fn func());
assert_eq!(func(), "$ Scotty, 3 to beam up");
Dependencies
~2MB
~44K SLoC