Rustのマクロの書き方を一通りご紹介します。macro_rules!で定義する一般的な宣言マクロはもちろん、#[derive]で使う自動導出マクロや属性マクロなどの手続きマクロも説明します。これであなたも黒魔術師! 2020/07/28 OPTiM TECH NIGHT|Rustの全マクロ種別…
概要: Rustマクロは2つの意味で衛生的である。その衛生性の説明とともに、それを実現するためのコンパイラの仕組みを説明する。 Rustマクロの2つの衛生性 Rustマクロ (ja) は次の2つの意味で衛生的(hygienic; 健全ともいう)である。 マクロ内で導入される変数名と、マクロ呼び出し側の変数名が衝突しない。(Lispマクロの意味での衛生性) 構文の優先順位の違いによる非直感的な挙動が発生しない。 この記事では、識別子に関する衛生性を説明する。(構文の優先度に関する衛生性については次記事を参照) 識別子に関する衛生性とは 次のようなプログラムが直感的な動作をするのが、識別子に関する衛生性である。 macro_rules! copy_swap { ($x:expr, $y:expr) => {{ let t = $x; $x = $y; $y = t; }}; } fn main
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く