元变量周围带有引号的宏

gra*_*eme 6 rust

我要打印!宏标识符(主要用于测试宏),但如果我这样做:

macro_rules! printname(
(
    $name:ident;
) => (
    println!("$name");
)

let this_name = "hello";

printname!(this_name);
Run Code Online (Sandbox Code Playgroud)

它只是打印

$名称

如果我println!("{}", $name);这样做,当然会替换变量this_name并打印

你好

我真正想要它做的是打印

这个名字

有没有办法引用元变量来获取它的值?

Mar*_*kov 8

stringify!应该可以工作。它提供了传递参数的字符串表示形式 a &'static str,然后可以将其直接传递到println!以将其打印到标准输出。