(每个标有 的语句? 都希望被断言)

我只是慢慢来。

由于生命周期省略有助于省略明确描述生命周期( ? ),因此在某些情况下我们需要描述它们。

一个例子可能是一个包含引用的结构:

struct Person<a'>{
car: &'a Car
}

我对以下假设是否正确,



老实说,我不相信自己的上述说法。因为在 Rust 生命周期的其他定义中,我是这么理解的 - 汽车需要至少与 'a 一样长,这样 Person 就不会有悬空指针。

最佳答案



不 在这里,终身省略只是让您的生活更轻松(作为作家和读者)。生命周期仍然存在(语义上)但不需要明确表示(语法上)。

据我所知,终身省略在 struct 定义中不起作用。它适用于函数签名和正文。



不。lifetime 的目标是避免悬空引用,并指示借用关系。

  • 悬空引用是引用(长)死值的引用,可能在已释放的内存中或更糟的在重用内存中。
  • 借用检查器使用借用关系来跟踪某人是否仍然拥有对某个值的引用;虽然有人引用了一个值,但不应将其移动或更改为另一种类型,以免所述引用变得悬空。

  • 有关悬空引用的更深入解释,请访问 I recommend this question

    因此,生命周期是为了确保引用永远不会超过它所引用的值。

    因此,约束与您的信念相反:此处 'a 的目标是让编译器确保您的 Person 永远不会超过它所引用的 Car

    关于结构需要一个生命周期,因为?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35772635/

    10-12 23:59