5

在我们的文档Unwindsafe

&mutT 和等类型是不安全&RefCell<T>的示例。一般的想法是,任何可以共享的可变状态在默认情况下都不是安全的。这是因为很容易在外部看到损坏的不变量,因为数据只是照常访问。catch_unwindcatch_unwind

按照这个逻辑,在我看来*mut T不应该Unwindsafe。但事实证明它是。这是为什么?

4

1 回答 1

3

*mut T作为一个原始指针,它没有任何不变量。

它可以是null,指向无效的内存,它是Copy,你可以让它们中的两个指向内存中的同一个区域。

无论如何,您都无法做到可变安全*mut T,因此没有理由不这样做Unwindsafe

于 2020-06-17T09:22:50.227 回答