9.1 布局
Vec 的内存布局
1分钟内可阅读完
译文 · 基于 The Rustonomicon
为把一切串联起来,我们将从零编写 std::Vec。我们限定在稳定 Rust 内。尤其不会使用任何本可让代码略好或更高效的 intrinsics,因为 intrinsics 永久不稳定。尽管许多 intrinsics 会在别处稳定(std::ptr 和 std::mem 就包含许多 intrinsics)。
最终这意味着我们的实现可能无法利用所有可能的优化,但绝不算幼稚。我们肯定会深入细枝末节,即便问题并不真的需要如此。
你想要进阶内容。我们就来进阶。
Vec 的内存布局
为 Vec 分配内存
实现 push 与 pop
释放 Vec 的内存
为 Vec 实现 Deref
实现 insert 与 remove
实现 IntoIter
抽取 RawVec 缓冲
实现 Drain
Vec 对 ZST 的处理
完整的 Vec 实现代码