功能引數(輸入壽命)

fn foo<'a>(x: &'a u32) {
    // ...
}

這指定 foo 具有壽命'a,引數 x 必須具有至少'a 的壽命。函式生命週期通常通過生命週期省略省略 :

fn foo(x: &u32) {
    // ...
}

在函式將多個引用作為引數並返回引用的情況下,編譯器無法通過生命週期省略來推斷結果的生命週期

error[E0106]: missing lifetime specifier
1 | fn foo(bar: &str, baz: &str) -> &i32 {
  |                                 ^ expected lifetime parameter

相反,應明確指定生命週期引數。

// Return value of `foo` is valid as long as `bar` and `baz` are alive.
fn foo<'a>(bar: &'a str, baz: &'a str) -> &'a i32 {

函式也可以使用多個生命週期引數。

// Return value is valid for the scope of `bar`
fn foo<'a, 'b>(bar: &'a str, baz: &'b str) -> &'a i32 {