我有一段奇怪的代码:
#![allow(unused)]
fn f<'a>() {}
fn g<'a: 'a>() {}
fn main() {
// let pf = f::<'static> as fn(); // (7)
let pg = g::<'static> as fn(); // (8)
//print!("{}", pf == pg);
}
Run Code Online (Sandbox Code Playgroud)
第7行如果没有注释就不能编译(有下面的错误),但是第8行可以编译。
#![allow(unused)]
fn f<'a>() {}
fn g<'a: 'a>() {}
fn main() {
// let pf = f::<'static> as fn(); // (7)
let pg = g::<'static> as fn(); // (8)
//print!("{}", pf == pg);
}
Run Code Online (Sandbox Code Playgroud)
'a: 'a第4行是什么意思?
Ras*_*Kaj -5
in只是一个名字a。'a您可以调用它'mylifetime,或者'golden_eternal_braid如果您愿意的话。该位置的任何生命周期参数的含义只是声明它。除全局之外的生命周期'static均未定义,因此您不能将函数声明为
fn f(param: &'a SomeType) {} // error
Run Code Online (Sandbox Code Playgroud)
...但是如果您声明它,您可以:
fn f<'a>(param: &'a SomeType) {} // ok
Run Code Online (Sandbox Code Playgroud)
当然,您也可以将生命周期留给推断,将函数声明为
fn f(param: &SomeType) {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
667 次 |
| 最近记录: |