我知道你可以打电话:
rustc -Z unstable-options --pretty=expanded
看到宏扩展,是否有类似的东西显示文件/包中变量的生命周期?
我看到有一个pretty=typed
,但它没有显示生命周期,因为它显示了所有内容的类型。
我可以看到一个选项,显示生命周期对新的Rust程序员(比如我)非常有帮助。
答案 0 :(得分:6)
一生都有一个奇特的名字,但实际上它们并不是特别的。实际上,您的源代码已经显示了生命周期!
fn example() {
let v1 = Vec::new();
{
let v2 = Vec::new();
} // v2 goes out of scope here
} // v1 goes out of scope here
项目的生命周期基本上是仅仅是变量有效的源代码中的大括号。当你有两个项目时会有一些额外的复杂性,但这是一个简单的扩展:
fn example() {
let v1 = Vec::new(); // | Lifetime of v1
let v2 = Vec::new(); // | | Lifetime of v2
}
在此示例中,v1
的生命时间比v2
略长,只有在您尝试引用另一个时才会非常重要:
fn example() {
let mut v1 = vec![]; // | Lifetime of v1
let mut v2 = vec![()]; // | | Lifetime of v2
v1.push(&v2); // | |
}
此处,v2
将在 v1
之前删除(对于广告素材有LIFO排序),因此对v2
的引用无效删除v2
并删除v1
时。
如果您对通用生命周期参数的互动方式更加好奇,我建议您查看this answer。