|
|
@ -4,7 +4,7 @@
|
|
|
|
> <br>
|
|
|
|
> <br>
|
|
|
|
> commit c49e5ee8859f8eb8f8867cbeafbdf5b802aa5894
|
|
|
|
> commit c49e5ee8859f8eb8f8867cbeafbdf5b802aa5894
|
|
|
|
|
|
|
|
|
|
|
|
当在第四章讨论引用时,我们遗漏了一个重要的细节:Rust 中的每一个引用都有其**生命周期**,也就是引用保持有效的作用域。大部分时候生命周期是隐含并可以推断的,正如大部分时候类型也是可以推断的一样。类似于当因为有多种可能类型的时候必须注明类型,也会出现引用的生命周期以多种不同方式向关联的情况,所以 Rust 需要我们使用泛型生命周期参数来注明他们的关系,这样就能确保运行时实际使用的引用绝对是有效的。
|
|
|
|
当在第四章讨论引用时,我们遗漏了一个重要的细节:Rust 中的每一个引用都有其**生命周期**,也就是引用保持有效的作用域。大部分时候生命周期是隐含并可以推断的,正如大部分时候类型也是可以推断的一样。类似于当因为有多种可能类型的时候必须注明类型,也会出现引用的生命周期以多种不同方式相关联的情况,所以 Rust 需要我们使用泛型生命周期参数来注明他们的关系,这样就能确保运行时实际使用的引用绝对是有效的。
|
|
|
|
|
|
|
|
|
|
|
|
好吧,这有点不太寻常,而且也不同于其他语言中使用的工具。生命周期,从某种意义上说,是 Rust 最与众不同的功能。
|
|
|
|
好吧,这有点不太寻常,而且也不同于其他语言中使用的工具。生命周期,从某种意义上说,是 Rust 最与众不同的功能。
|
|
|
|
|
|
|
|
|
|
|
@ -458,7 +458,7 @@ methods. /Carol -->
|
|
|
|
|
|
|
|
|
|
|
|
当为带有生命周期的结构体实现方法时,其语法依然类似列表 10-10 中展示的泛型类型参数的语法:包括声明生命周期参数的位置和生命周期参数是否与结构体字段或方法的参数与返回值相关联。
|
|
|
|
当为带有生命周期的结构体实现方法时,其语法依然类似列表 10-10 中展示的泛型类型参数的语法:包括声明生命周期参数的位置和生命周期参数是否与结构体字段或方法的参数与返回值相关联。
|
|
|
|
|
|
|
|
|
|
|
|
(实现方法时)结构体字段的生命周期必须总是在`impl`关键字之后声明并在结构体名称之后被适用,因为这些生命周期是结构体类型的一部分。
|
|
|
|
(实现方法时)结构体字段的生命周期必须总是在`impl`关键字之后声明并在结构体名称之后被使用,因为这些生命周期是结构体类型的一部分。
|
|
|
|
|
|
|
|
|
|
|
|
`impl`块里的方法签名中,引用可能与结构体字段中的引用相关联,也可能是独立的。另外,生命周期省略规则也经常让我们无需在方法签名中使用生命周期注解。让我们看看一些使用列表 10-24 中定义的结构体`ImportantExcerpt`的例子。
|
|
|
|
`impl`块里的方法签名中,引用可能与结构体字段中的引用相关联,也可能是独立的。另外,生命周期省略规则也经常让我们无需在方法签名中使用生命周期注解。让我们看看一些使用列表 10-24 中定义的结构体`ImportantExcerpt`的例子。
|
|
|
|
|
|
|
|
|
|
|
|