rustp-7.生命周期的省略
生命周期的省略
生命周期的省略有如下三个规则:
- 每个引用参数(注意是引用的参数 )都有他自己的生命周期参数:
一个引用参数的函数,其中有一个生命周期:两个引用参数的函数,有两个生命周期:1
fn foo<'a>(x: &'a i32)
1
fn foo<'a,'b>(x: &'a i32,y:&'b i32)
- 如果只有一个输入生命周期参数,所有的输出生命周期参数会得到同样的生命周期
1
2
3fn foo(x:&i32) ->&i32
//等价于
fn foo<'a>(x: &'a i32) -> &'a i32 - 在方法方法不同于普通的函数,它有self参数 中,如果有多个输入
生命周期,但是其中一个是&self或者&mut self,那么self的生命周期被赋予所有输出生
命周期参数。1
2
3
4//伪代码
fn function(&self,x:&str,y:&str,....) -> &str
//等价
fn function<'a,'b,'c>(&'a self,x:&'b str,y:&'c str) -> &'a str
- 简单例子
1 | //这种情况下就不需要标注 |
Comment