#static #reference #safely #no-alloc #promote #argument #short-lived

no-std static-on-stack

工具,用于在非终止函数执行期间安全地将短生命周期引用提升到 'static

1 个不稳定版本

0.1.0 2023年10月17日

#2#promote

MIT/Apache

5KB

static-on-stack

在满足将引用传递给永不终止的函数的条件下,安全地将短生命周期引用提升到 'static 引用。

请参阅 [promote_to_static()] 了解如何使用它以及为什么它被认为是安全的。


lib.rs:

在满足将引用传递给永不终止的函数的条件下,安全地将短生命周期引用提升到 'static 引用。

请参阅 [promote_to_static()] 了解如何使用它以及为什么它被认为是安全的。执行函数 f,并传递提升为 &'static T&T

为什么这是安全的

此操作安全的先决条件是函数不仅永不终止,而且任何从函数中飞出的 panic 都会导致程序立即中止。函数执行周围有一个 drop guard,使得任何 panic 都会变成双重 panic。

根据 Drop 文档,双重 panic "可能会中止程序"(即不保证),还有一个额外的 panic guard 在其中运行无限循环。这并不很美观,但如果双重 panic 以任何方式不会导致程序中止,它就扮演了其关键角色,确保原始参数的生命周期仍然不会结束。

无运行时依赖