在Rust宏中是否有可能多次使用同一参数,只实例化一次该参数?
以这个简单的例子为例:
macro_rules! squared {
($x:expr) => {
$x * $x
}
}
虽然这样做是可以的,比如像squared!(some_function() + 1)
这样调用时,函数将会被多次调用。有没有办法避免这种情况呢?
不起作用的示例:
macro_rules! squared {
($x:expr) => {
let y = $x;
y * y
}
}
编译错误:
error: expected expression, found statement (`let`)