Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在我们的文档中Unwindsafe:
Unwindsafe
&mutT 和等类型是不安全&RefCell<T>的示例。一般的想法是,任何可以共享的可变状态在默认情况下都不是安全的。这是因为很容易在外部看到损坏的不变量,因为数据只是照常访问。catch_unwindcatch_unwind
&mut
&RefCell<T>
catch_unwind
按照这个逻辑,在我看来*mut T不应该Unwindsafe。但事实证明它是。这是为什么?
*mut T
*mut T作为一个原始指针,它没有任何不变量。
它可以是null,指向无效的内存,它是Copy,你可以让它们中的两个指向内存中的同一个区域。
Copy
无论如何,您都无法做到可变和安全*mut T,因此没有理由不这样做Unwindsafe。