我在Rust中遇到了许多用单撇号表示的类型:
'static
'r
'a
那撇号的意义是什么?也许是引用(&
)的修饰符?特定于引用的泛型类型?我不知道隐藏在哪里的文档。
我在Rust中遇到了许多用单撇号表示的类型:
'static
'r
'a
那撇号的意义是什么?也许是引用(&
)的修饰符?特定于引用的泛型类型?我不知道隐藏在哪里的文档。
Answers:
这些是Rust命名的生命周期。
引用Rust编程语言:
Rust中的每个引用都有一个生存期,这是该引用有效的范围。就像大多数时间类型被推断一样,大多数时间生命周期都是隐式和推断的。与由于多种类型而可能要注释类型的情况类似,在某些情况下,引用的生存期可能以几种不同的方式关联,因此Rust需要我们使用通用生存期参数来注释关系,以便确保运行时使用的实际引用绝对有效。
终身注释不会更改所涉及的任何参考的有效期限。与在签名指定通用类型参数时函数可以接受任何类型的方式相同,在签名指定通用寿命参数时函数可以接受具有任何生存期的引用。生命周期注释所做的是将多个引用的生命周期相互关联。
生命周期注释的语法略有不同:生命周期参数的名称必须以撇号开头
'
。生命周期参数的名称通常都是小写字母,并且与泛型类型一样,它们的名称通常很短。'a
是大多数人默认使用的名称。生命周期参数注释&
位于引用的之后,并且空格将生命周期注释与引用的类型分隔开。
换句话说,生命周期近似于执行范围,在该范围内参考所指向的数据是有效的。Rust编译器将保守地推断出最短的生命周期以确保安全。如果要告诉编译器参考寿命比最短估计寿命长,可以命名它,例如,输出参考与给定输入参考具有相同的生存期。
该'static
生命周期是一个特殊的生命周期,最长的住所有寿命的-该计划的持续时间。一个典型的例子是字符串“ literals”,它在程序/模块的生命周期中始终可用。
您可以从第29张幻灯片开始的幻灯片中获取更多信息。
Rust中的生存期还深入讨论了生存期。