Update Ch10

This commit is contained in:
Peng Hailin, 2023-04-20 04:50:23 +08:00
parent 9693a93a94
commit cadbbd30c5

View File

@ -1064,9 +1064,9 @@ fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
*清单 10-21指明签名中全部引用都必须有着同一生命周期 `'a``longest` 函数定义* *清单 10-21指明签名中全部引用都必须有着同一生命周期 `'a``longest` 函数定义*
此代码应会编译,并在清单 10-19 的 `main` 函数中使用他时,产生出这里想要的结果来 此代码应会编译,并在清单 10-19 的 `main` 函数中使用他时,产生出咱们想要的结果
该函数签名现在会告诉 Rust对于生命周期 `'a`,该函数会取两个参数,这两个参数都是存活时间至少为 `'a` 的两个字符串切片。该函数签名还会告诉 Rust从该函数返回的字符串切片将存活至少生命周期 `'a`么长时间。在实践中,这就表示有这个 `longest` 函数返回的引用的生命周期,与该函数参数所引用到的值生命周期中较小的一致。这些关系,就是这里想要 Rust 在分析此代码时,要用到的关系。 这个函数签名现在告诉 Rust针对某个生命周期 `'a`,该函数会取两个参数,他们都是存活时间至少为 `'a` 的字符串切片。该函数签名还告诉 Rust从该函数返回的字符串切片将存活至少生命周期 `'a`样长时间。实际上,这表示 `longest` 函数所返回的引用生命周期,与该函数参数引用的值生命周期中较小的一致。这些关系,就是咱们想要 Rust 在分析此代码时,要用到的关系。
当于函数中对生命周期进行注解时这些注解是介入函数签名中而非函数体中。这些生命周期注解成为了该函数合约的一部分这与签名中的类型较为相似。令到函数包含生命周期合约the lifetime contract就意味着 Rust 编译器所完成的分析,可以相对简单一些。在某个函数被注解的方式,或其被调用的方式存在问题时,所报出的编译器错误,就可以更精准地指向所编写代码或约束的某个部分。相反,相比于添加了生命周期注解,在 Rust 编译器要做出更多有关这里所预期生命周期关系的推断时那么编译器可能就只能够指出在问题原因处许多步之外代码的某个使用了if, instead, the Rust compiler made more inferences about what we intended the relationships of the lifetimes to be, the compiler might only be able to point to a use of our code many steps away from the cause of the problem 当于函数中对生命周期进行注解时这些注解是介入函数签名中而非函数体中。这些生命周期注解成为了该函数合约的一部分这与签名中的类型较为相似。令到函数包含生命周期合约the lifetime contract就意味着 Rust 编译器所完成的分析,可以相对简单一些。在某个函数被注解的方式,或其被调用的方式存在问题时,所报出的编译器错误,就可以更精准地指向所编写代码或约束的某个部分。相反,相比于添加了生命周期注解,在 Rust 编译器要做出更多有关这里所预期生命周期关系的推断时那么编译器可能就只能够指出在问题原因处许多步之外代码的某个使用了if, instead, the Rust compiler made more inferences about what we intended the relationships of the lifetimes to be, the compiler might only be able to point to a use of our code many steps away from the cause of the problem