在Unwindsafe
文档中,我们有:
诸如
&mut
T 和&RefCell<T>
之类的类型是不安全的。一般的想法是,默认情况下,任何可以在catch_unwind
之间共享的可变状态都不是安全的。这是因为很容易在catch_unwind
之外看到一个破碎的不变性,因为数据只是像往常一样访问。
按照这个逻辑,在我看来,*mut T
不应该Unwindsafe
.但事实证明是这样。为什么?
*mut T
是一个原始指针,它没有任何不变性。
它可以为 null,指向无效内存,它是Copy
,并且您可以让其中两个指向内存中的同一区域。
无论如何,你没有什么可以多变和安全的*mut T
,所以没有理由不Unwindsafe
.