1
Rustマクロで引数を複数回使用することはできますか?引数を一度インスタンス化するだけですか? 単一インスタンシエーションで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`)
あなたの質問を「編集」して、あなたの例が「非機能」である理由を説明できますか? [それは私のために働くようだ](https://play.rust-lang.org/?gist=9f89d79b921d6036998e2cabc267c740)。 – Shepmaster
注目のエラーです。 – ideasman42
2番目のマクロを表示した2番目のリンクをクリックしましたか? 2番目のマクロをどのように呼び出して失敗するかを示すために質問を編集できますか?おそらく、あなたは[遊び場で何かを作成して](https://play.rust-lang.org)でも完全にエラーを再現することができますか? Stack Overflowに関する質問をするときに[MCVE]を作成することが100%期待されています。 – Shepmaster