問題タブ [rust-macros]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macros - マクロでRustの「if」式を一致させる方法は?
特定の Rust 制御フローを書き換えるマクロを作成しようとしていますが、if
式を一致させるのに苦労しています。問題は、述語が式であることですが、 an の後に aまたはexpr
が続くことは許可されていません。block
{
私が持っている最高のものは使用することtt
です:
単一トークンまたはグループ化された述語でうまく機能します。
ただし、述語がグループ化されていない場合は失敗します。
tt
また、述語での繰り返しパターンを使用しようとしました。
ただし、後続のブロックも一致する必要があるかどうかがあいまいになるため、これはエラーを生成しますtt
。
これを行う方法はありますか、それともマクロで使用する特別な構文を発明することに行き詰まっていますか?
rust - 別のモジュールで定義された関数にマクロ属性を適用するにはどうすればよいですか?
wasm-bindgen
viarust-webpack-template
を使用して Rust コードを WebAssembly にコンパイルすることに興味があります。#[wasm_bindgen]
ただし、生成された WebAssembly インターフェイスから関数ロジックを分離してプロジェクトをより適切に整理できるように、コードを属性マクロで直接ラップすることは避けたいと思います。代わりに、バインディングの生成を別のファイルにすることをお勧めします。たとえば、次のようになります。
#[wasm_bindgen]
これは、通常続く関数定義の AST で動作するマクロ属性であることは理解していますが、そのマクロを別の場所で定義されたコードに適用する方法はありますか?
rust - コンパイル時の定数式のセットの最大値の計算
Rust プロシージャル マクロ (派生マクロ) 内で、コンパイル時に一連の定数の最大値を計算しようとしています。
マクロは次のようになります。
問題はstd::cmp::max
、それが関数であるため、定数式内で使用できないことです (少なくともconst fn
が安定するまで - 可能であれば安定した Rust を維持したい)。
コンパイル時に一連の定数の最大値を計算するにはどうすればよいですか?
max!
基本的に s の巨大なチェーンを再帰的に構築するマクロを書くことができるかもしれませんがif
、よりクリーンな解決策があることを願っています。