(标有?的每个声明都希望被声明)
我只是慢慢地活着。
由于生命周期省略有助于省略明确描述生命周期(?),因此我们需要对其进行描述。
示例可能是包含引用的结构:
struct Person<a'>{
car: &'a Car
}
我是否正确,以下假设,
说实话,我不相信上面的这个陈述。因为在铁锈寿命的其他定义中我明白这一点 - 汽车需要保持活力至少与&#39; a 一样长,所以人不会有一个悬垂的指针。 / p>struct是一种值类型 - 因此它的内存位于堆栈中。在使用此结构的范围结束后 - 结构将死亡。但是由于这个结构包含对 Car 的引用,并且这个引用可能被借用到其他地方 - 只要Car引用正在使用中,结构需要保持活动状态。因此,只要Car正在使用,Lifetime &#39; a 就会告诉Person结构保持活跃状态。(?)
答案 0 :(得分:9)
由于生命周期省略有助于省略明确描述生命周期(?),因此我们需要对其进行描述。
否 As 在这里,终身精益只是让你的生活更轻松(作为作家和读者)。生命周期仍然存在(语义上),但不需要明确表示(语法上)。
据我所知,Lifetime elision在struct
定义中不起作用。它适用于函数签名和实体。
但是由于这个结构保存了对Car的引用,并且这个引用可能被借用到其他地方 - 只要Car引用正在使用,结构需要保持活动状态。
没有。终身的目标是避免悬挂引用,并指出借用关系。
有关悬挂引用的更深入解释,I recommend this question。
因此,生命期是关于确保参考永远不会超过它所指的值。
因此,约束与您的信念相反:此处'a
的目标是让编译器确保您的Person
永远不会超过它所引用的Car
。< / p>
答案 1 :(得分:7)
反过来说:结构包含一个引用,因此它可能不会超过引用所指向的内容。