Rust Reserved Keywords
予約語
Rust の予約語は、言語の基本的な構文や機能を定義するために使用されます。これらのキーワードは、識別子(変数名や関数名など)として使用することはできません。
stable(Edition 2024 / strict keywords)
識別子(変数名・関数名など)として使えない ガチ予約語(doc.rust-lang.org)
制御構文
if
条件分岐の if 式。Rust の if は式なので値を返せる(let x = if cond { ... } else { ... };)。
else
if の分岐先。else if もここに含まれる(else {} / else if ... {})。
match
パターンマッチの match 式。網羅性(exhaustive)チェックが強いのが特徴。
while
条件が true の間繰り返すループ。while let もこの系統(パターンで回す)。
for
イテレータ(IntoIterator)を使うループ。for x in iter {} の形。
loop
無限ループ(ただし break で値を返して抜けられるので、式としても使われる)。
break
ループを終了するためのキーワード。break は値を返すことができ、ループの結果として使用されることがあります。
continue
現在の周回を打ち切って次の反復へ進む。
return
関数から即時に戻る。return expr; で値を返す(末尾式で返すのが基本だが明示も可能)。
定義 / 構造 / 名前空間
fn
関数定義。fn name(args) -> Ret { ... }。
struct
構造体定義(フィールド付き / タプル / ユニット構造体)。
enum
列挙型(バリアント)定義。Rust の代数的データ型(ADT)の中心。
union
共用体定義。unsafe と絡むことが多い(どのフィールドが有効かを自分で管理する必要)。
trait
トレイト定義(インターフェース + デフォルト実装 + 関連型/定数 など)。
impl
実装ブロック。impl Type {}(固有メソッド)や impl Trait for Type {}(トレイト実装)。
type
型エイリアス定義(type Name = ...;)。新しい型を作るわけではなく“別名”。
const
定数定義。コンパイル時に評価できる値(定数評価)として使う。
static
静的変数。基本はグローバル領域に置かれ、ライフタイム 'static を持つ。可変 static mut は unsafe。
let
変数束縛(ローカルの名前付け)。パターン束縛もできる(let (a,b) = ...;)。
mod
モジュール定義(名前空間)。ファイル/ディレクトリ構造と関連する。
use
パスの導入(インポート)。use foo::bar as baz; のように別名も可能。
crate
パスで使うキーワード。crate::... で 現在のクレートのルートから参照する。
super
パスで使うキーワード。super::... で 親モジュールを指す。
self
文脈により意味が変わる:
- パス:
self::...は 現在のモジュール - メソッド引数:
selfは レシーバ(所有権を持つ self)
Self
トレイト/impl の中で **「実装対象の型」**を表す型名(大文字)。
型・変換・境界(文法要素として重要)
as
キャスト/型変換の構文(expr as T)。数値変換などで使う(ただし安全性は自分で保証)。
in
for pat in iter の 構文要素。
where
ジェネリクス境界の指定(where T: Trait, ...)。型引数が多いときに読みやすい。
所有権 / 参照 / ミュータビリティ
move
クロージャが捕捉(capture)するときに 環境をムーブする指定。所有権をクロージャへ移す。
mut
可変を表す。let mut x(可変束縛)、&mut T(可変参照)など。
ref
パターン内で 参照として束縛する(例:let ref r = x;)。最近は参照パターンや借用推論で出番は減りがち。
安全性 / FFI / 可視性
unsafe
安全性をコンパイラが保証できない操作を許可する印。unsafe {} ブロック、unsafe fn、unsafe trait などで使う。
extern
FFI(外部関数インターフェース)関連。extern "C" { ... } や extern crate ...(今はあまり使わないがキーワードとして残る)。
pub
可視性(公開)指定。pub, pub(crate), pub(super), pub(in path) など。
動的ディスパッチ / 非同期
dyn
動的ディスパッチのトレイトオブジェクト(Box<dyn Trait> など)を明示するキーワード。(doc.rust-lang.org)
async
async fn / async {} ブロックなどで、Future を返す非同期構文。
await
future.await で Future の完了を待つ(非同期ランタイムに制御を返しつつ待機)。
真偽値リテラル(予約扱い)
厳密には「キーワード枠で扱われるリテラル」。(doc.rust-lang.org)
true
真(bool リテラル)。
false
偽(bool リテラル)。
reserved(将来の使用のために予約 / Edition 2024)
今は機能が無い or 未安定だが、将来の言語拡張のために名前だけ確保されている語。 2024 では
genが追加、tryは 2018 から reserved。(doc.rust-lang.org)
abstract
将来の抽象化(抽象的な定義/実装)用途に備えて予約。現状の stable Rust では意味を持たない。
become
過去に 末尾呼び出し最適化(TCO) などの文脈で議論された名残として予約されている(現状は未使用の予約語)。Nightly では一時期 become 式が利用可能だった。(doc.rust-lang.org)
box
過去に “box 式” などの構文と関係していた歴史があり、将来の用途も含め予約されたまま。Nightly では一時期 box 式が利用可能だった。(doc.rust-lang.org)
do
将来の構文拡張用に予約(例えば do { ... } 風の文法などの余地)。現状未使用。
final
OOP 的な「継承禁止」などを連想させる語として予約されているが、現状の Rust で意味は無い(将来用の確保)。
macro
将来のマクロ定義構文(macro ...)などのために予約。現状は macro_rules! が主流で、この語自体は未使用。
override
OOP 的な “オーバーライド明示” を連想させる語として予約。現状未使用。
priv
pub の逆(非公開指定)を連想させる語として予約。現状未使用。
typeof
C 系の typeof に近い「型を得る」構文を連想させる語として予約。現状未使用。
unsized
?Sized 等のサイズ不定型周りの将来拡張を見据えて予約。現状未使用。
virtual
かつての “virtual 構文” 系の試行や将来拡張の余地として予約。現状未使用。
yield
ジェネレータ/コルーチン系の構文で使われ得るため予約。現状 stable では通常使えない(将来の機能枠)。Nightly では yield 式が利用可能。(doc.rust-lang.org)
try
2018 以降の edition で reserved。try { ... } のような try ブロック構文など将来/不安定機能のために確保されている。Nightly では try 式が利用可能。(doc.rust-lang.org)
gen(Edition 2024 で追加)
2024 edition で新たに予約。将来の gen blocks(ジェネレータブロック) 導入のために確保された。(doc.rust-lang.org)
参考:予約語をどうしても識別子にしたい場合(raw identifiers)
予約語でも r# を付ければ識別子として使える(ただし reserved を名前に使うのは将来互換の観点で非推奨)。(doc.rust-lang.org)
let r#type = 1;
fn r#match() {}