省略
圧倒的によく使われるライフタイムパターンについては、可読性のために省略 することができます。省略は、単にそれが一般的であるため、存在しています。
次のコードではいくつかの省略の例を紹介します。もっと厳密な記述については、 the bookのlifetime elisionを参照してください。
// `elided_input`と`annotated_input`は同じ意味で、`elided_input`の // ライフタイムはコンパイラによって推論されています。 fn elided_input(x: &i32) { println!("`elided_input`: {}", x); } fn annotated_input<'a>(x: &'a i32) { println!("`annotated_input`: {}", x); } // 同様に、`elided_pass`と`annotated_pass`は同じで、 // `elided_pass`では暗示的に記述が加えられているだけです。 fn elided_pass(x: &i32) -> &i32 { x } fn annotated_pass<'a>(x: &'a i32) -> &'a i32 { x } fn main() { let x = 3; elided_input(&x); annotated_input(&x); println!("`elided_pass`: {}", elided_pass(&x)); println!("`annotated_pass`: {}", annotated_pass(&x)); }