i32 // contains no lifetimes, so all zero lifetimes outlive 'a
Vec<u8> // same as above
&'static str // 'static outlives all lifetimes
SomeStruct<'static> // same as above
字符串 下面是一些只有在其生存期超过'a时才有效的类型。
Vec<&'b u8> // 'b must outlive 'a
&'c str // 'c must outlive 'a
SomeStruct<'d> // 'd must outlive 'a
AnotherStruct<'x, 'y, 'z> // all lifetimes must outlive 'a
1条答案
按热度按时间f45qwnt81#
这意味着泛型中使用的任何类型都必须比
'a
更长寿,这意味着它包含的所有引用都必须比'a
更长寿。这里有一些类型,将永远工作。字符串
下面是一些只有在其生存期超过
'a
时才有效的类型。型
这最常用于
+ 'static
,这意味着“所有包含的生存期必须是'static
”。你也可以在trait对象上看到它,比如Box<dyn Error + 'a>
和impl Trait
类型,比如impl Iterator<Item = u8> + 'a
,它的意思是“这个类型只存在于'a
”,就像一个常规的生命周期参数一样。我不认为自2018年版以来有任何变化。