在其他宏内部/之前调用宏

J. *_*Doe 7 rust rust-proc-macros

我创建了一个类似函数的程序宏。我用声明性宏作为参数来调用它。我希望找到一种在处理过程宏之前扩展声明性宏的方法(或在过程宏内部扩展它)。示例(代码也可在https://github.com/Jasperav/rec_macro获取):

致电网站:

macro_rules! t {
    ($e:expr) => {
        $e.to_string() + " I am a macro"
    }
}

fn main() {
    re!(t!("hi"));
}
Run Code Online (Sandbox Code Playgroud)

过程宏箱:

#[proc_macro_hack]
pub fn re(input: TokenStream) -> TokenStream {
    panic!("{:#?}", input) // I can see "hi" and something like t!, but not the result of the macro expansion
}
Run Code Online (Sandbox Code Playgroud)

panic消息中,我看到声明性宏 ( t) 位于其中。我只想要这种情况下的原始值hi I am a macro(或某种syn类型)。就我而言,声明性宏应始终扩展为 a&strString

是否可以t在调用之前展开,或者在 proc 宏内手动re展开?t我想在我的 proc 函数中看到宏的结果(在本例中:“嗨,我是一个宏”),就像宏一样。

谢谢。