【发布时间】:2020-08-07 10:38:57
【问题描述】:
我正在阅读 Rust 中 anyhow crate 的代码。有一个particular line我没完全掌握:
{
let vtable = &ErrorVTable { ... };
construct(vtable, ...);
}
fn construct(vtable: &'static ErrorVTable, ...);
我们似乎创建了一个ErrorVTable 结构,并返回一个对它的引用,该引用具有生命周期`static。我希望编译器在函数堆栈上创建一个结构,并返回对它的引用,从而导致奇怪的内存问题。
但似乎编译器检测到这个变量对于所有可能的E 在编译时推断并以某种方式为它们创建静态变量?这实际上是如何工作的?
【问题讨论】: