MeWrite Docs

Rust: missing lifetime specifier

Rustのライフタイム指定エラーの解決方法

概要

関数の戻り値や構造体のフィールドで参照を使用する際、ライフタイムを明示する必要がある場合に発生するエラーです。

エラーメッセージ

error[E0106]: missing lifetime specifier

原因

  1. 戻り値の参照: 関数が参照を返すがライフタイムが不明
  2. 構造体のフィールド: 参照を含む構造体でライフタイム未指定
  3. 複数の入力参照: どの入力参照と紐づくか不明確

解決策

1. ライフタイムパラメータを追加

1
2
3
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() > y.len() { x } else { y }
}

2. 構造体でのライフタイム

1
2
3
4
5
6
7
8
9
struct Excerpt<'a> {
    part: &'a str,
}

impl<'a> Excerpt<'a> {
    fn level(&self) -> i32 {
        3
    }
}

3. staticライフタイム

1
2
3
fn get_static() -> &'static str {
    "I live forever"
}

よくある間違い

  • ライフタイムを省略できる場合を把握していない
  • 複雑なライフタイム関係を単純化できない

Rust の他のエラー

最終更新: 2025-12-09