#string-literal #literals #definition #interpolation #macro #concat #expression

macro macropol

在宏定义中进行人性化的字符串字面量插值

4个版本

0.1.3 2022年4月23日
0.1.2 2021年12月8日
0.1.1 2021年12月8日
0.1.0 2021年12月8日

#31 in #concat

Download history 41/week @ 2024-04-04 94/week @ 2024-04-11 86/week @ 2024-04-18 164/week @ 2024-04-25 55/week @ 2024-05-02 52/week @ 2024-05-09 51/week @ 2024-05-16 55/week @ 2024-05-23 81/week @ 2024-05-30 174/week @ 2024-06-06 206/week @ 2024-06-13 241/week @ 2024-06-20 193/week @ 2024-06-27 56/week @ 2024-07-04 185/week @ 2024-07-11 208/week @ 2024-07-18

673 每月下载量
11 个crate中使用了 (6 直接使用)

MIT/Apache

12KB
229

🚨 macropol

在宏定义中进行人性化的字符串字面量插值。

替换字符串字面量中的占位符($foo)和任意表达式,并使用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");

依赖关系

~2MB
~43K SLoC