首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么‘*mut T’实现‘implement’,但‘&mut T’却没有?

为什么‘*mut T’实现‘implement’,但‘&mut T’却没有?
EN

Stack Overflow用户
提问于 2020-06-17 06:08:48
回答 1查看 342关注 0票数 5

文档 for Unwindsafe中,我们有:

&mut、T和&RefCell<T>等类型是而不是解除安全的例子。一般的想法是,任何可以在catch_unwind之间共享的可变状态在默认情况下并不是安全的。这是因为在catch_unwind之外很容易看到一个破碎的不变量,因为数据只是像往常一样简单地被访问。

按照这个逻辑,在我看来,*mut T不应该是Unwindsafe。但是原来是。为什么会这样呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-17 09:22:50

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

它可以是null,指向无效内存,它是Copy,您可以让其中两个指向内存中的相同区域。

不管怎么说,使用*mut T你都不能随意和安全地做什么,所以没有理由不做Unwindsafe

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62422474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档