在不安全代码指南参考中,它说
Rust 中的所有内部突变都必须发生在 内部
UnsafeCell,因此所有具有内部可变性的数据结构都必须(直接或间接)用于UnsafeCell此目的。
另外,在关于 的讨论UnsafeCell中,它说
UnsafeCell基本上是编译器的优化障碍。
确实如此UnsafeCell是 Rust 中的编译器优化障碍吗?如果是,标准库源代码中的哪一行发出了屏障,它是如何工作的?
[更新]
相关问题的答案给出了非常好的解释。TL;DR 版本是:UnsafeCell<T>被标记为#[lang = "unsafe_cell"]强制它在以下情况下保持不变T。
现在我认为这与优化没有太大关系,但与寿命分析的相互作用更密切。
对于 Rust 中的方差概念,The Rustonomicon Book给出了详细的解释。
| 归档时间: |
|
| 查看次数: |
478 次 |
| 最近记录: |