前言
本书主要是为那些可能已经在网上学过Rust开源资料,但是会问自己“接下来该学点什么”的人准备的。本书包含数十个有趣的示例,如果你有自己的想法且时间允许,还可以进一步扩展这些示例。这些示例使得本书12章的内容涵盖了Rust的一个颇为有用的子集,以及许多生态系统会用到的那些最重要的第三方库。
这些代码示例更注重的是易读性,而不是注重如何优雅、地道地使用Rust。如果你是一个很有经验的Rust程序员,那么可能会发现自己并不认同这些例子中的一些风格设定。我希望你能够体谅这是在为初学者考虑。
这并不是一本内容全面的参考书,因此略去了语法和标准库的部分内容。通常情况下,这些省略掉的内容都是高度专业的,应该给予“特殊待遇”。然而,本书旨在为读者提供足够的基础知识和信心,以便在必要时再进一步学习这些特定的主题。从系统编程书的角度来看,本书也是很独特的,因为几乎本书的所有示例都能在微软的Windows系统上运行。
本书适合哪些人阅读
所有对Rust感兴趣的人,喜欢通过实用的示例来学习的人,或者是那些被“Rust是一种系统编程语言”这一事实吓倒的人,都应该会喜欢本书。有编程经验的读者将获益更多,因为本书会假定读者已经了解一些计算机编程的基本概念。
本书的内容是如何组织的:路线图
本书的正文分为两部分。第一部分介绍Rust的语法和一些独特的特点,第二部分会应用到在第一部分中介绍的这些知识。每一章都会引入一到两个新的Rust概念。第一部分是对Rust的快速介绍。
● 第1章解释Rust存在的原因,以及如何开始用它来编程。
● 第2章提供翔实的Rust语法基础知识。本章示例包括芒德布罗集渲染器和一个grep的克隆。
● 第3章讲解如何组合Rust的数据类型以及如何使用一些错误处理的工具。
● 第4章讨论Rust中确保要访问的数据始终有效的机制。
第二部分是将Rust应用于系统编程领域的一些基础性介绍。
● 第5章介绍在数字计算机中信息是如何表示的,重点介绍数字是如何被近似表示的。本章示例包括实现定点数格式和一个CPU模拟器。
● 第6章阐释引用、指针、虚拟内存、栈和堆等术语。本章示例包括一个内存扫描器和自动生成艺术项目。
● 第7章阐释如何将数据结构存储到存储设备中。本章示例包括一个hexdump的克隆和一个可运行的数据库。
● 第8章通过多次重新实现HTTP讲解计算机是如何进行通信的,每一次实现都会剥离掉一个抽象层。
● 第9章探索在数字计算机中跟踪时间的过程。本章示例包括一个可运行的NTP客户端。
● 第10章介绍进程、线程和一些相关的抽象概念。本章示例包括一个海龟绘图应用程序和一个并行解析器。
● 第11章介绍操作系统的作用和计算机是如何启动的。本章示例包括编译自己的引导加载程序和操作系统内核。
● 第12章阐释外部世界是如何与CPU和操作系统进行通信的。
请按照本书章节顺序进行阅读。只有掌握了前面章节中的内容,才能更好地学习后续章节中的知识。不过,每一章中的项目是相互独立的。因此,如果本书有某些你特别感兴趣的主题,也欢迎你跳着来阅读。