admin管理员组文章数量:1438489
Rust 生命周期规则(一)
生命周期省略规则
rust编译器一些情况下允许用户省略生命周期的标注,使代码更加清晰、易读。它的生命周期省略规则总共有3条,这些规则并不需要程序员明确遵守,编译器只是在程序员写出符合这些规则的代码时允许省略省略周期标注,由编译器在编译阶段辅助添加。
- 每个引用参数都会拥有自己的生命周期参数
- 当只存在一个输入生命周期参数时,这个生命周期会被赋予给所有输出的生命周期参数
- 当拥有多个输入生命周期参数时,而其中一个是&self或&mut self时,self的生命周期会被赋予给所有的输出生命周期参数。这个规则使方法实现更加易于阅读和编写,它允许程序员省略一些不必要的标注。
第一条规则作用于输入生命周期,第二、三条规则作用于输出生命周期。当编译器检查完这3条规则后仍有无法计算出的生命周期引用时,编译器就会停止运行并抛出错误;此时需要由程序员手动完成出错的生命周期标注。
- 第一条规则示例:
fn foo(x: &u32, y: &u32, z: &u32)
等价于fn foo<'a, 'b, 'c>(x: &'a u32, y: &'b u32, z: &'c u32)
; - 第二条规则示例:
fn foo(x: &u32, y: u64) -> (&u32, &u64)
等价于fn foo<'a>(x: &'a u32, y: u64)-> (&'a u32, &'a u64)
; - 第三条规则示例:
fn foo(&self, x: &u32, y: &u64) -> &u32
等价于fn foo<'a, 'b, 'c>(&'a self, x: &'b u32, y: &'c u64) -> &'a u32
本文标签: Rust 生命周期规则(一)
版权声明:本文标题:Rust 生命周期规则(一) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1747583133a2715966.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论