[英]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.