[英]Struct needs a lifetime because?
(每个声明标有?的声明都要声明)
我只是慢慢地生活。
由于生命周期省略有助于省略明确描述生命周期( ? ),因此我们需要对其进行描述。
一个例子可能是一个包含引用的结构:
struct Person<a'>{
car: &'a Car
}
我是否正确,以下假设:
struct是一种值类型 - 因此它的内存位于堆栈中。 在使用此结构的范围结束后 - 结构将死亡。 但是因为这个结构保存了对Car的引用,并且这个引用可能被借用到其他地方 - 只要Car引用正在使用中,结构需要保持活动状态。 终身“一所以告诉人结构来维持生命,只要汽车在使用中。(?)
说实话,我不相信上面的这个陈述。 因为在生锈寿命的其他定义我的理解是这样-这辆车需要活下去,至少只要“一个人这样不会有悬摆指针。
由于生命周期省略有助于省略明确描述生命周期( ? ),因此我们需要对其进行描述。
不, 在这里,终身精益只是让你的生活更轻松(作为作家和读者)。 生命周期仍然存在(语义上),但不需要明确表示(语法上)。
据我所知,Lifetime elision在struct
定义中不起作用。 它适用于函数签名和正文。
但是因为这个结构保存了对Car的引用,并且这个引用可能被借用到其他地方 - 只要Car引用正在使用中,结构需要保持活动状态。
不。终身的目标是避免悬挂引用 ,并指出借用关系。
有关悬空参考的更深入解释, 我建议这个问题 。
因此,生命期是关于确保参考永远不会超过它所指的值。
因此,约束与你的信念相反: 'a
这里的目标是让编译器确保你的Person
永远不会超过它所指的Car
。
反过来说:struct包含一个引用,因此它可能不会超过引用指向的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.