是否可以使用syntex中的引用宏?

时间:2016-09-09 16:50:53

标签: rust macros syntex

我正在使用this sample作为基础实现宏。我现在想在宏扩展代码中使用quote_expr!

fn expand_macro<'cx>(
    cx: &'cx mut ExtCtxt,
    sp: Span,
    _: &[TokenTree]
) -> Box<MacResult + 'cx> {
    let expr = quote_expr!(cx, { const A: u32 = 10; });
    MacEager::expr(expr)
}

编译器错误,因为未定义quote_expr!

我发现quote_expr!是通过类似于expand_macro函数的机制在base.rs中定义的。

我的主包有一个build.rs,可以通过扩展宏从main.rs生成src/main.rs.in。我在第二个箱子中有一个expand_macro功能,它使用来自主箱的build.rs

要使用quote_expr!,我应该有三个包,其中两个包含build.rs吗?

是否有更简单的方法来编写表达式,可能是将它放在一个字符串中并调用解析器来生成一个令牌树?

0 个答案:

没有答案