項目14:生存期間を理解しよう
LT;DR
Rust の参照値には、すべて 生存期間 が関連付けされている 参照 を含むデータ構造にも生存期間が関連付けられるため、生存期間の管理が煩雑にならないように 所有 を検討する のが良い 'static は、スコープ 外にならないことが保証されている値の参照に用いられる ライフタイム注釈が同じであっても、生存期間が同じということはではない
ライフタイム注釈の目的は、アイテムへの参照がアイテム自身よりも長く存在しないことを保証すること
これを踏まえると、
入力と出力に同じライフタイム注釈を付与している場合、出力は入力よりも長く生存できないことを表す
pub fn first<'a>(data: &'a [Item]) -> Option<&'a Item>
2 つの入力に同じライフタイム注釈を付与している場合、出力は生存期間が短い方の入力よりも長く生存できない
pub fn find<'a>(haystack: &'a [u8], needle: &'a [u8]) -> Option<&'a [u8]>
どちらか一方の入力のみを参照している場合、戻り値のライフタイムがもう一方の生存期間を包含する必要はない
pub fn find<'a, 'b>(haystack: &'a [u8], needle: &'b [u8]) -> Option<&'a [u8]>
'_ は、同じライフタイム注釈を他で使う必要がない場合に用いられる
e.g. Debug の fmt メソッド
hr.icon
radish-miyazaki.icon あまりにも長くなったのでページ分割した