(标记为的每一条语句都希望被断言)
我只是慢慢地过了一辈子。
由于生命周期省略有助于省略对生命周期的显式描述(,),因此在某些情况下我们需要对它们进行描述。
一个例子可能是一个包含引用的结构:
struct Person<a'>{
car: &'a Car
}我以下的假设是对的,
结构是一种值类型,因此它的内存位于堆栈上。在使用此结构的作用域结束后,该结构将死亡。但是,由于这个结构包含了对 Car 的引用,并且这个引用可能被借用到其他地方--只要这个汽车引用在使用中,这个结构就需要继续存在。因此,“生命周期”( Lifetime 'a )告诉这个人只要汽车在使用,就应该保持生命。()
老实说,我不相信我自己的上述说法。因为在其他关于锈蚀寿命的定义中,我是这么理解的--汽车至少需要保持生命,只要'a,这样人就不会有一个悬空的指针。
发布于 2016-03-03 13:30:48
由于生命周期省略有助于省略对生命周期的显式描述(,),因此在某些情况下我们需要对它们进行描述。
不,就像这里所说的那样,终身教育只是为了让你的生活变得更容易(无论是作为作家还是读者)。生命周期仍然存在(语义上),但不需要显式地表示(语法上的)。
据我所知,终身省略在struct定义中不起作用。它在功能、签名和身体中起作用。
但是,由于这个结构保存了一个对汽车的引用,并且这个引用可能被借用到其他地方--只要汽车引用在使用中,这个结构就需要活着。
不是的。生命周期的目标是避免引用的悬空,并指示借用关系。
要更深入地解释悬空引用,请参阅I recommend this question。
因此,生命周期就是确保一个引用永远不会超过它所指的价值。
因此,约束与您的信念相反:'a的目标是让编译器确保您的Person永远不会超过它所引用的Car。
发布于 2016-03-03 12:58:15
相反,结构包含一个引用,因此它可能不会超过引用指向的内容。
https://stackoverflow.com/questions/35772635
复制相似问题