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&str或String。
是否可以t在调用之前展开,或者在 proc 宏内手动re展开?t我想在我的 proc 函数中看到宏的结果(在本例中:“嗨,我是一个宏”),就像宏一样。
谢谢。
| 归档时间: |
|
| 查看次数: |
1735 次 |
| 最近记录: |