我知道你可以打电话给:
rustc -Z unstable-options --pretty=expanded
Run Code Online (Sandbox Code Playgroud)
看到宏扩展,是否有类似的东西显示文件/包中的变量的生命周期?
我看到有一个pretty=typed
,但它没有显示生命周期,因为它显示了一切的类型.
我可以看到一个选项来显示生命周期对新的Rust程序员(比如我)非常有帮助.
一生都有一个奇特的名字,但实际上它们并不是特别的.事实上,您的源代码已经显示了生命周期!
fn example() {
let v1 = Vec::new();
{
let v2 = Vec::new();
} // v2 goes out of scope here
} // v1 goes out of scope here
Run Code Online (Sandbox Code Playgroud)
项的生命周期基本上只是源代码中变量有效的大括号.当你有两个项目时会有一些额外的复杂性,但这是一个简单的扩展:
fn example() {
let v1 = Vec::new(); // | Lifetime of v1
let v2 = Vec::new(); // | | Lifetime of v2
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,v1
生命有点长v2
,只有当你试图引用另一个时才真正重要:
fn example() {
let mut v1 = vec![]; // | Lifetime of v1
let mut v2 = vec![()]; // | | Lifetime of v2
v1.push(&v2); // | |
}
Run Code Online (Sandbox Code Playgroud)
这里,v2
将被丢弃前 v1
(有一个LIFO订货到滴),因此参考v2
会时之间无效v2
被丢弃,v1
被丢弃.
如果您对通用生命周期参数的相互作用更加好奇,我建议您查看这个答案.
归档时间: |
|
查看次数: |
121 次 |
最近记录: |