問題一覧に戻る
中級ライフタイム
問題69: ライフタイム注釈
ライフタイム注釈は参照の有効期間を明示的に指定します。'aという記法は、同じライフタイムを持つすべての参照が同じ期間有効であることを示します。ダングリング参照を防ぎ、コンパイル時にメモリ安全性を保証します。コンパイラはこれらの注釈を使って参照がデータより長生きしないことを検証します。
// ライフタイム注釈を使った関数
fn longest<>(x: & str, y: & str) -> & str {
if x.len() > y.len() {
x
} else {
y
}
}
fn main() {
let string1 = String::from("long string");
let result;
{
let string2 = String::from("xyz");
// 両方の参照が有効な間だけ結果も有効
result = longest(string1.as_str(), string2.as_str());
println!("Longest: {}", result);
}
}