簡體   English   中英

具有 static 壽命的類型意味着什么?

[英]What does it mean for a type to have a static lifetime?

我理解借用、特征或結構具有生命周期意味着什么,但對我來說為什么一個類型會有生命周期是沒有意義的。 我對類型的理解是它們是在編譯時使用的抽象,它們根本不需要存在於二進制文件中。 例如,具有兩個 int、一個由兩個 int 組成的元組和一個由兩個 int 組成的固定大小數組的結構在編譯時應該全部 map 到 memory 中的相同值排列,並且代碼將使用字節偏移量來找到這兩個價值觀。 如果我是正確的,生命周期的概念根本不應該適用於類型,所以以下兩個結構是等價的:

pub struct Foo<T> {
    foo: T
}

pub struct Bar<T: 'static> {
    bar: T
}

除了等效之外,語法根本不存在。 我一定是誤解了一些東西,廣泛的谷歌搜索並沒有幫助。 類型生命周期的目的是什么,應該在什么時候使用它們?

T可以攜帶比'static更短的生命周期。 例如, T可能是一些&'a str (對於一些'a ),所以Foo<T>變為Foo<&'a str>並因此綁定到'a ,它可能'static短。

第一個定義接受任何T並將在生命周期內綁定到T 第二個定義說T不能包含比'static更短的生命周期( T可以是&'static strString或任何其他'static )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM