Rust 语言的生命周期标注很多人不理解,或者理解了也记不住,那可能是没归纳吧。 其实 生命周期标注 看起来玄之又玄,其实很好理解的,只要牢记以下几点就可以了:
- 重要的事情说三遍:生命周期标注只是帮助编译器检查,而不影响实际的程序运行。
- 所有引用类型的参数都有独立的生命周期 'a 、'b 等。比如方法/函数的参数,比如结构体的引用参数
- 入参的生命周期决定了出参的生命周期,这是编辑器自动推测生命周期的基础。
- 自动推测规则 1: 如果只有一个引用型输入,它的生命周期会赋给所有输出。
- 自动推测规则 2: 如果有多个引用类型的参数,其中一个是 self ,那么它的生命周期会赋给所有输出。
- 自动推测规则 3: 如果有多个引用,编译器无法知道开发者到底怎么使用出参,也就无法为出参指定生命周期。其实编译器能做到,如果那样,还不如上自动 GC.
第一条规则有一个重要的说明,就是引用类型的入参决定了整体的函数或结构体的生命周期。rust 结构体如果有构造函数,那么其实就是构造函数的入参的生命周期决定了结构体里引用成员的的生命周期,可惜的是,rust 没有,那么只能标注在结构体成员变量上
目前尚无回复