我怎样才能让编译器在我的 crate/file 中发出变量的生命周期?
How can I get the compiler to emit the lifetime(s) of variable(s) in my crate/file?
我知道你可以这样调用:
rustc -Z unstable-options --pretty=expanded
看看宏扩展,有没有类似的东西来显示 file/crate 中变量的生命周期?
我看到有一个 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
项目的生命周期基本上只是源代码中变量有效的大括号。当你有两个项目时会有一点额外的复杂性,但它是一个简单的扩展:
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 顺序删除),因此对 [=14= 的引用] 在删除 v2
和删除 v1
之间无效。
如果您对 通用生命周期参数 的交互方式更好奇,我建议您查看 。
我知道你可以这样调用:
rustc -Z unstable-options --pretty=expanded
看看宏扩展,有没有类似的东西来显示 file/crate 中变量的生命周期?
我看到有一个 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
项目的生命周期基本上只是源代码中变量有效的大括号。当你有两个项目时会有一点额外的复杂性,但它是一个简单的扩展:
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 顺序删除),因此对 [=14= 的引用] 在删除 v2
和删除 v1
之间无效。
如果您对 通用生命周期参数 的交互方式更好奇,我建议您查看