常常有人说:Rust 写不了链表。严谨地说,写不了安全、零开销的双链表。
无可辩驳,这是对的。不仅如此,Vec
等容器也无法写得安全、零开销。它们都需要更精细地控制内存。
不过,惊喜还有更多。有的东西看着如同库函数,实则是编译器开洞。自己即便用了 unsafe
,也写不了!
解引用 Box
可以移出其中的值。而 DerefMove
trait 尚不存在,自己写不了。
UnsafeCell
允许从不可变引用中获取可变引用。如果不使用它,那就是未定义行为,即便保证不同时访问也一样。
如此之类,应该还有很多。我也不懂,读者可自行寻找。