Progrust Library.

// dictionary

ライフタイム(Lifetime).

ライフタイム(Lifetime)

借用(Borrowing)された値の有効期限をコンパイラに明示するためのアノテーションです。関数やstructで参照を使う場合、ライフタイムを指定することでコンパイラが参照の安全性を検証できます。

基本的な使用方法

fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() > y.len() {
        x
    } else {
        y
    }
}
ライフタイムアノテーションの詳細

'a は汎用ライフタイムパラメータです。この記法は「戻り値の参照は、入力の参照と同じ生存期間を持つ」という情報をコンパイラに提供します。

複数のライフタイムパラメータを使うこともできます:

fn foo<'a, 'b>(x: &'a str, y: &'b str) -> &'a str {
    x
}

Struct のライフタイム

struct Message<'a> {
    text: &'a str,
}

fn main() {
    let s = String::from("hello");
    let m = Message { text: &s };
}

この辞書が使われているページ

backlinks 3

  1. 辞書借用(Borrowing)
  2. 辞書所有権(Ownership)
  3. 記事Rust の所有権を深掘り - メモリ安全性の秘密