第9章 实现 Vec

从零实现 Vec 的教程

译文 · 基于 The Rustonomicon

实现 Vec

原文链接: https://doc.rust-lang.org/nomicon/vec/vec.html

  为把一切串联起来,我们将从零编写 std::Vec。我们限定在稳定 Rust 内。尤其不会使用任何本可让代码略好或更高效的 intrinsics,因为 intrinsics 永久不稳定。尽管许多 intrinsics 会在别处稳定(std::ptr 和 std::mem 就包含许多 intrinsics)。

  最终这意味着我们的实现可能无法利用所有可能的优化,但绝不算幼稚。我们肯定会深入细枝末节,即便问题并不真的需要如此。

  你想要进阶内容。我们就来进阶。


9.1 布局

Vec 的内存布局

9.2 分配

为 Vec 分配内存

9.3 Push 与 Pop

实现 push 与 pop

9.4 释放

释放 Vec 的内存

9.5 Deref

为 Vec 实现 Deref

9.6 Insert 与 Remove

实现 insert 与 remove

9.7 IntoIter

实现 IntoIter

9.8 RawVec

抽取 RawVec 缓冲

9.9 Drain

实现 Drain

9.10 处理零大小类型

Vec 对 ZST 的处理

9.11 最终代码

完整的 Vec 实现代码

最后修改 August 11, 2026: 更新 (70a5af133)