首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Rust 生命周期规则(一)

Rust 生命周期规则(一)

原创
作者头像
路之遥
修改2025-04-22 10:42:31
修改2025-04-22 10:42:31
970
举报
文章被收录于专栏:luzhiyaoluzhiyao

生命周期省略规则

rust编译器一些情况下允许用户省略生命周期的标注,使代码更加清晰、易读。它的生命周期省略规则总共有3条,这些规则并不需要程序员明确遵守,编译器只是在程序员写出符合这些规则的代码时允许省略省略周期标注,由编译器在编译阶段辅助添加。

  1. 每个引用参数都会拥有自己的生命周期参数
  2. 当只存在一个输入生命周期参数时,这个生命周期会被赋予给所有输出的生命周期参数
  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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生命周期省略规则
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档