有没有办法让Rust宏充当C中的文本替换?

时间:2018-02-04 21:36:18

标签: macros rust preprocessor

在C中,如果你愿意,你可以:

#define    do     {
#define    end    }

// ...

if (foo == bar) do
    foo += 5;
    bar /= foo;
end

有没有办法在Rust中做这样的事情?

2 个答案:

答案 0 :(得分:8)

不(谢天谢地)。 Rust宏必须始终扩展为完整的AST节点。

如果您需要文字替换,请使用适合该作业的工具,例如sedawkm4,C预处理器等。很可能是由构建脚本驱动的。

答案 1 :(得分:4)

实际上有一个玩具项目可以做到这一点:slag。但我从未尝试过。

它提供了这个有用的建议:

  

我应该使用它吗?

     

没有。使用默认的防锈语法。