← Rust コース
25. ? 演算子 — エラーの委譲
Result を返す式の後ろに ? を付けると、「Ok なら中身を取り出して続行、Err ならその場で関数から Err を return」という処理を1文字で書けます。エラーを呼び出し元に委譲するときの定番構文です。
失敗しうる処理が何段も続くとき、毎回 match を書くとコードがネストだらけになります。実務の Rust コードでは「途中の関数は ? でエラーを上に流し、最後にまとめて処理する」というスタイルが広く使われています。
? は Result(や Option)を返す関数の中でしか使えません。main で使う場合も、例のように main の戻り値を Result にする必要があります。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Rust