Dev Study
Rust コース

35. ライフタイム注釈 — <'a>

複数の参照を受け取って参照を返す関数では、「返す参照がどの引数と同じ期間生きるのか」をコンパイラが判断できないことがあります。そこで fn longest<'a>(a: &'a str, b: &'a str) -> &'a str のように <'a> という注釈を書き、引数と戻り値のライフタイムの関係を伝えます。

注釈は参照の寿命を延ばす機能ではなく、すでにある関係に名前を付けて説明するだけのものです。単純な関数ではコンパイラが関係を自動で推論してくれる(省略規則)ため、実務で注釈を書くのはコンパイラに要求されたときがほとんどです。

「missing lifetime specifier」というエラーが出たら、この注釈の出番です。ジェネリクスの <T> と同じ位置に <'a> を書く、という形の対応で覚えると整理しやすいです。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Rust
サンプルコードで身につける(5本) →

学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。

公式ドキュメントで詳しく ↗