rust编译器一些情况下允许用户省略生命周期的标注,使代码更加清晰、易读。它的生命周期省略规则总共有3条,这些规则并不需要程序员明确遵守,编译器只是在程序员写出符合这些规则的代码时允许省略省略周期标注,由编译器在编译阶段辅助添加。
第一条规则作用于输入生命周期,第二、三条规则作用于输出生命周期。当编译器检查完这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
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。