|
|
@ -189,7 +189,7 @@ struct Parser<'c, 's: 'c> {
|
|
|
|
|
|
|
|
|
|
|
|
这是一个非常冗长的例子,不过正如本章的开头所提到的,这类功能是很小众的。你并不会经常需要这个语法,不过当出现类似这样的情形时,却还是有地方可以参考的。
|
|
|
|
这是一个非常冗长的例子,不过正如本章的开头所提到的,这类功能是很小众的。你并不会经常需要这个语法,不过当出现类似这样的情形时,却还是有地方可以参考的。
|
|
|
|
|
|
|
|
|
|
|
|
### 生命周期约束
|
|
|
|
### 生命周期约束(lifetime bound)
|
|
|
|
|
|
|
|
|
|
|
|
在第十章,我们讨论了如何在泛型类型上使用 trait bound。也可以像泛型那样为生命周期参数增加限制,这被称为**生命周期约束**。例如,考虑一下一个封装了引用的类型。回忆一下第十五章的 `RefCell<T>` 类型:其 `borrow` 和 `borrow_mut` 方法分别返回 `Ref` 和 `RefMut` 类型。这些类型是引用的封装,他们在运行时记录检查借用规则。`Ref` 结构体的定义如列表 19-16 所示,现在还不带有生命周期约束:
|
|
|
|
在第十章,我们讨论了如何在泛型类型上使用 trait bound。也可以像泛型那样为生命周期参数增加限制,这被称为**生命周期约束**。例如,考虑一下一个封装了引用的类型。回忆一下第十五章的 `RefCell<T>` 类型:其 `borrow` 和 `borrow_mut` 方法分别返回 `Ref` 和 `RefMut` 类型。这些类型是引用的封装,他们在运行时记录检查借用规则。`Ref` 结构体的定义如列表 19-16 所示,现在还不带有生命周期约束:
|
|
|
|
|
|
|
|
|
|
|
|