太多链表
太多链表
简介:
引言
Alexis Beingessner 所著的《Too Many Linked Lists》一书(俄语译名为“Слишком много связных списков”)不仅仅是又一本 Rust 语言指南。它是一本独特、深刻且在某些方面具有挑衅性的教材,迫使读者真正理解 Rust 中的内存、所有权和 unsafe 代码是如何工作的。该书于 2021 年出版,篇幅约 150 页,已成为希望从编写安全代码转向处理原始指针和手动内存管理的 Rust 开发者心目中的经典之作。
作者是 Rust 社区中知名的开发者,曾参与 Rust 标准库的工作,并为 Servo 等项目做出过贡献。他的风格生动、幽默且不加修饰。本书可在线免费获取,但对于教育网站 PythonLib 而言,我们将其视为所有希望深入系统编程的人的宝贵资源。
这本书是关于什么的?
书名不言自明:本书致力于在 Rust 中实现各种类型的链表。但并非普通的链表,而是那些需要使用 unsafe Rust 的链表——即原始指针、手动解引用和内存管理。全书共探讨了六种不同的单向链表和双向链表实现,每一种都揭示了内存工作的某个特定方面。
从基于 Box 的简单栈开始,作者逐渐增加示例的复杂性,过渡到使用原始指针、缓存甚至“惰性”内存分配的链表。每一章都是一个独立的挑战,迫使读者重新思考借用、生命周期和安全性是如何工作的。
这本书适合谁?
本书面向 已经熟悉 Rust 基础的程序员。如果您刚开始学习 Rust,并且对所有权、借用和生命周期等概念还不太自信,这本书可能会显得困难。然而,对于那些已经掌握了基本语法并想了解 Rust 如何“在引擎盖下”工作的人来说,这是理想的下一步。
本书也对 C/C++ 开发者有用,他们希望看到 Rust 如何解决内存管理问题,并愿意深入 unsafe 世界。当然,所有计划编写处理底层数据结构的 Rust 库的人都必须阅读本书。
读者将学到什么?
阅读本书后,您将能够:
- 理解何时以及为何需要 unsafe 代码——以及如何在使用它时最小化风险。
- 从头实现单向链表和双向链表,使用原始指针。
- 掌握 Pin 和 Unpin 的使用——这些机制保证了对象在内存中地址的稳定性。
- 学会编写围绕 unsafe 代码的安全包装器,以免破坏 Rust 的保证。
- 理解分配器的工作原理以及如何创建自己的内存分配策略。
- 了解使用指针时的典型错误:悬垂指针、双重释放、数据竞争。
本书的优势
首先引人注目的是 叙述风格。Alexis 写作幽默,经常与读者交流,分享自己的经验和错误。这不是一本枯燥的教科书,而是一场生动的对话。第二个优势是 逐步增加难度。每一章都建立在前一章的基础上,您永远不会感到被直接扔进深水区。
第三是 实践导向。书中没有抽象的示例;每段代码都可以运行和验证。作者还关注 unsafe 代码的测试和调试,这在实际开发中至关重要。最后,本书 免费 并提供网页版,使其对所有人都可访问。
唯一的缺点是本书