Rustにおけるライフタイム注釈について
概要
Rustでは、所有権の概念があるが、その変数が生きている間のことをライフタイムという。
いわば、変数の寿命のことである。
そして、ライフタイム注釈とはそのライフタイムを特定のスコープ内(関数など)で複数の変数同士で同期させるものである。
コンパイラに、スコープ内で変数の寿命(=ライフタイム)を示す。
以下にコード例を示す。
fn longest<'a>(s1: &'a str, s2: &'a str) -> &'a str {
if s1.len() > s2.len() {
s1
} else {
s2
}
}
この例では、longest関数は2つの文字列スライスを引数として受け取り、ライフタイム注釈'aを使用して、引数s1とs2の寿命を関連付けている。
これは、関数の戻り値が&'a str型であることを示し、ライフタイム注釈'aは、s1とs2のスコープ内で有効なことを示している。