[英]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 str
、 String
或任何其他'static
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.