cleanup: 修复结构体成员(引用)的生命周期定义

cleanup: 修复结构体成员(引用)的生命周期定义
pull/1396/head
jwcesign 9 months ago committed by GitHub
parent 53122be7f5
commit e16ad2093d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -320,9 +320,9 @@ fn main() {
} }
``` ```
`ImportantExcerpt` 结构体中有一个引用类型的字段 `part`,因此需要为它标注上生命周期。结构体的生命周期标注语法跟泛型参数语法很像,需要对生命周期参数进行声明 `<'a>`。该生命周期标注说明,**结构体 `ImportantExcerpt` 所引用的字符串 `str` 必须比该结构体活得更久**。 `ImportantExcerpt` 结构体中有一个引用类型的字段 `part`,因此需要为它标注上生命周期。结构体的生命周期标注语法跟泛型参数语法很像,需要对生命周期参数进行声明 `<'a>`。该生命周期标注说明,**结构体 `ImportantExcerpt` 所引用的字符串 `str` 生命周期需要大于等于该结构体的生命周期**。
`main` 函数实现来看,`ImportantExcerpt` 的生命周期从第 4 行开始,到 `main` 函数末尾结束,而该结构体引用的字符串从第一行开始,也是到 `main` 函数末尾结束,可以得出结论**结构体引用的字符串活得比结构体久**,这符合了编译器对生命周期的要求,因此编译通过。 `main` 函数实现来看,`ImportantExcerpt` 的生命周期从第 4 行开始,到 `main` 函数末尾结束,而该结构体引用的字符串从第一行开始,也是到 `main` 函数末尾结束,可以得出结论**结构体引用的字符串生命周期大于等于结构体**,这符合了编译器对生命周期的要求,因此编译通过。
与之相反,下面的代码就无法通过编译: 与之相反,下面的代码就无法通过编译:

Loading…
Cancel
Save