类型具有静态生命周期意味着什么?

Lio*_*oft 6 lifetime rust

我理解借用、特征或结构拥有生命周期意味着什么,但对我来说,为什么类型会有生命周期是没有意义的。我对类型的理解是,它们是在编译时使用的抽象,并且它们根本不需要存在于二进制文件中。例如,具有两个 int 的结构、两个 int 的元组以及两个 int 的固定大小数组在编译时应全部映射到内存中相同的值排列,并且代码将使用字节偏移量来查找这两个价值观。如果我的观点是正确的,那么生命周期的概念根本不应该应用于类型,因此以下两个结构是等效的:

pub struct Foo<T> {
    foo: T
}

pub struct Bar<T: 'static> {
    bar: T
}
Run Code Online (Sandbox Code Playgroud)

除了等效之外,语法根本不存在。我一定是误解了什么,广泛的谷歌搜索也没有帮助。类型生命周期的目的是什么?什么时候应该使用它们?

use*_*968 6

T可以携带比 更短的寿命'static。例如,T可能是 some &'a str(对于某些'a),因此Foo<T>变为Foo<&'a str>,因此有一个到 的界限'a,它可能比 短'static

第一个定义接受任何T并将在生命周期内绑定到T。第二个定义表示T不得包含比'static(T可能是&'static strString或受 ) 约束的任何其他内容短的生命周期'static