Rust生命周期

生命周期知识点
- 生命周期标记并不会改变任何引用的实际作用域。在通过函数签名指定生命周期参数时,我们并没有改变传入引用或返回真实引用的真实生命周期,而是告诉编译器当不满足此约束条件时,就拒绝编译通过。
- 不需要显式标注生命周期的三种规则
- 每一个引用参数都会获得独自的生命周期
- 若只有一个输入生命周期(函数参数中只有一个引用类型), 那么该生命周期会被赋给所有的输出生命周期
- 若存在多个生命周期,且其中一个是
&self
或&mut self
,则&self
的生命周期被赋给所有的输出生命周期
NLL(Non-Lexical Lifetime)
引用的生命周期正常来说应该从借用开始一直持续到作用域结束。但在1.31版本后,引用的生命周期从借用处开始,一直持续到最后一次使用的地方。
再借用
1 | fn main() { |
注意: 可变引用r
和不可变引用rr
同时存在不报错的原因是,rr
并不是对p
的不可变引用,而是对r
的再借用,因此不会破会借用规则。 对于再借用,在rr
的生命周期内,不能再使用原来的借用r
。
- 标题: Rust生命周期
- 作者: HPC
- 创建于 : 2024-01-08 09:50:02
- 更新于 : 2025-01-18 03:32:39
- 链接: https://studyrecording.github.io/waste-code/2024/01/08/Rust生命周期/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
未找到相关的 Issues 进行评论
请联系 @StudyRecording 初始化创建