在文档 for Unwindsafe中,我们有:
Unwindsafe
&mut、T和&RefCell<T>等类型是而不是解除安全的例子。一般的想法是,任何可以在catch_unwind之间共享的可变状态在默认情况下并不是安全的。这是因为在catch_unwind之外很容易看到一个破碎的不变量,因为数据只是像往常一样简单地被访问。
&mut
&RefCell<T>
catch_unwind
按照这个逻辑,在我看来,*mut T不应该是Unwindsafe。但是原来是。为什么会这样呢?
*mut T
发布于 2020-06-17 09:22:50
*mut T是一个原始指针,它没有任何不变。
它可以是null,指向无效内存,它是Copy,您可以让其中两个指向内存中的相同区域。
Copy
不管怎么说,使用*mut T你都不能随意和安全地做什么,所以没有理由不做Unwindsafe。
https://stackoverflow.com/questions/62422474
相似问题