请教:Box 和 raw pointer 的混用
原文中文,约700字,阅读约需2分钟。发表于: 。在《Learning Rust With Entirely Too Many Linked Lists》一文中,作者定义了如下链表结构: pub struct List<T> { head: Link<T>, tail: *mut Node<T>, } type Link<T> = Option<Box<Node<T>>>; struct Node<T> { ...
本文讨论了在 Rust 中使用链表结构时混用 Box 和 raw pointer 可能导致 UB 的问题。作者认为全部使用 raw pointer 或 NonNull 可以避免这个问题,因为这样任何修改变量都要在 unsafe 中进行,开发者会更加注意变量的读写逻辑。