1 个不稳定版本
0.1.0 | 2023年10月17日 |
---|
#2 在 #promote
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 以任何方式不会导致程序中止,它就扮演了其关键角色,确保原始参数的生命周期仍然不会结束。