代码如下:
fn inner<'a:'b, 'b>(x:&'a i32, _y:&'b i32) -> &'b i32 {
    x
}
fn main() {
  let a = 1;
  {
      let b = 2;
      inner(&b, &a);
      inner(&a, &b);
  }
}
'a:'b函数中的边界inner意味着生命周期'a持续时间超过'b。在上面的例子中,变量的生命周期比b短a。借用检查器在遇到inner(&b, &a). 但是,代码可以编译。有人可以提供一些解释吗?
生命周期注释描述了借用变量的生命周期,而不是借用变量的生命周期。在对 的两次调用中inner(),所有借用都会持续到调用结束,因此编译器可以推断出它们相同的生命周期,因此'a: 'b在两种情况下都满足了界限。
| 归档时间: | 
 | 
| 查看次数: | 97 次 | 
| 最近记录: |