请教:Box 和 raw pointer 的混用

💡 原文中文,约700字,阅读约需2分钟。
📝

内容提要

本文讨论了在 Rust 中使用链表结构时混用 Box 和 raw pointer 可能导致 UB 的问题。作者认为全部使用 raw pointer 或 NonNull 可以避免这个问题,因为这样任何修改变量都要在 unsafe 中进行,开发者会更加注意变量的读写逻辑。

🎯

关键要点

  • 文章讨论了在 Rust 中使用链表结构时混用 Box 和 raw pointer 可能导致未定义行为(UB)。
  • 作者认为混用 Box 和 raw pointer 不安全,建议全部使用 raw pointer。
  • Box 是安全指针,而 raw pointer 是不安全的,混用可能导致开发者忽视变量的读写逻辑。
  • 通过解引用 Box 修改变量是安全的,但通过解引用 raw pointer 是不安全的。
  • 如果全部使用 raw pointer 或 NonNull,开发者在修改变量时必须在 unsafe 中进行,从而提高对变量读写逻辑的关注,避免 UB。
➡️

继续阅读