Rustにおけるライフタイム注釈について

概要

Rustでは、所有権の概念があるが、その変数が生きている間のことをライフタイムという。
いわば、変数の寿命のことである。

所有権借用について重要な概念である。

そして、ライフタイム注釈とはそのライフタイムを特定のスコープ内(関数など)で複数の変数同士で同期させるものである。
コンパイラに、スコープ内で変数の寿命(=ライフタイム)を示す。

以下にコード例を示す。

fn longest<'a>(s1: &'a str, s2: &'a str) -> &'a str {
    if s1.len() > s2.len() {
        s1
    } else {
        s2
    }
}
 

この例では、longest関数は2つの文字列スライスを引数として受け取り、ライフタイム注釈'aを使用して、引数s1s2の寿命を関連付けている。
これは、関数の戻り値が&'a str型であることを示し、ライフタイム注釈'aは、s1s2のスコープ内で有効なことを示している。