介绍
注意:此版本的书与 The Rust Programming 相同 语言以印刷和电子书格式提供,来自 No Starch 新闻。
欢迎来到 The Rust Programming Language,这是一本关于 Rust 的入门书籍。 Rust 编程语言可帮助您编写更快、更可靠的软件。 高级人体工程学和低级控制在编程中经常出现冲突 语言设计;Rust 挑战了这种冲突。通过平衡强大的 技术能力和出色的开发人员体验,Rust 为您提供了选择 轻松控制低级细节(例如内存使用情况) 传统上与此类控制相关联。
Rust 适合谁
出于各种原因,Rust 对许多人来说是理想的。让我们来看看其中的一些 最重要的组。
开发团队
Rust 被证明是大型团队之间协作的高效工具 具有不同系统编程知识水平的开发人员。低级代码 容易出现各种细微的错误,在大多数其他语言中都可以捕获这些错误 只有通过经验丰富的广泛测试和仔细的代码审查 开发 人员。在 Rust 中,编译器通过拒绝 编译包含这些难以捉摸的错误(包括并发错误)的代码。通过工作 除了编译器之外,团队还可以将时间花在程序的 逻辑,而不是追逐错误。
Rust 还为系统编程世界带来了现代开发者工具:
- Cargo 是包含的依赖项管理器和构建工具,它使添加、 编译和管理依赖项,在整个 Rust 中轻松且一致 生态系统。
- Rustfmt 格式化工具可确保一致的编码样式 开发 人员。
- rust-analyzer 为集成开发环境 (IDE) 提供支持 代码完成和内联错误消息的集成。
通过在 Rust 生态系统中使用这些工具和其他工具,开发人员可以 在编写系统级代码时高效。
学生
Rust 适用于学生和对学习系统感兴趣的人 概念。使用 Rust,许多人已经了解了诸如作 系统开发。社区非常热情并乐于回答 学生问题。通过像这本书这样的努力,Rust 团队希望 让更多人更容易理解系统概念,尤其是那些刚接触 编程。
公司
数百家大大小小的公司都在生产中使用 Rust 进行各种 任务,包括命令行工具、Web 服务、DevOps 工具、嵌入式 设备、音频和视频分析和转码、加密货币、 生物信息学、搜索引擎、物联网应用、机器 学习,甚至是 Firefox Web 浏览器的主要部分。
开源开发人员
Rust 适用于想要构建 Rust 编程语言、社区、 开发人员工具和库。我们很乐意让您为 Rust 做出贡献 语言。
重视速度和稳定性的人
Rust 适合那些渴望语言速度和稳定性的人。通过速度,我们 指 Rust 代码的运行速度和 Rust 允许你 编写程序。Rust 编译器的检查通过特性确保稳定性 添加和重构。这与 语言,开发人员通常不敢修改这些检查。由 努力实现零成本抽象,更高级别的功能,可编译为 低级代码与手动编写的代码一样快,Rust 努力确保安全 代码也是快速代码。
Rust 语言也希望支持许多其他用户;那些提到的 以下是一些最大的利益相关者。总的来说,Rust 最棒的 目标是消除程序员已经接受的权衡 数十年来,通过提供安全性和生产力、速度和人体工程学。给 Rust 试一试,看看它的选择是否适合你。
这本书是给谁的
本书假定你已经用另一种编程语言编写了代码,但 不对哪一个做出任何假设。我们试图制造这种材料 来自各种编程背景的人都可以广泛使用。我们 不要花很多时间谈论什么是编程或如何思考 关于它。如果您对编程完全陌生,那么 阅读一本专门介绍编程的书。
如何使用这本书
一般来说,这本书假定你是按照从前到下的顺序阅读的 返回。后面的章节建立在前面章节和更早章节中的概念之上 章节可能不会深入探讨特定主题的细节,但会重新审视 该主题将在后面的章节中讨论。
您将在本书中找到两种章节:概念章节和项目章节 章。在概念章节中,您将了解 Rust 的一个方面。项目内 章节,我们将一起构建小程序,应用您所学的知识 远。第 2 章、第 12 章和第 20 章是项目章节;其余的是概念章节。
第 1 章解释了如何安装 Rust,如何编写一个 “Hello, world!” 程序。 以及如何使用 Cargo,Rust 的包管理器和构建工具。第 2 章是 使用 Rust 编写程序的动手实践介绍,让您构建一个 猜数字游戏。在这里,我们将介绍高层次的概念,稍后 章节将提供更多详细信息。如果你想弄脏你的手 马上,第 2 章就是那个地方。第 3 章介绍了 Rust 功能 与其他编程语言类似,在第 4 章 您将了解 Rust 的所有权系统。如果你是一个特别细致的 喜欢在学习下一个细节之前先了解每一个细节的学习者,您 可能想跳过第 2 章,直接进入第 3 章,返回第 章 2 当您想应用您学到的细节来开展项目时。
第 5 章讨论结构和方法,第 6 章介绍枚举、表达式和控制流结构。您将使用 structs 和
enums 在 Rust 中创建自定义类型。match
if let
在第 7 章中,您将了解 Rust 的模块系统和隐私规则 用于组织您的代码及其公共应用程序编程接口 (API) 的 API 进行。第 8 章讨论了一些常见的集合数据结构,这些结构 标准库提供 vectors、strings 和 hash map 等。第 9 章 探索 Rust 的错误处理理念和技术。
第 10 章深入探讨了泛型、特征和生命周期,它们为您提供了
来定义适用于多种类型的代码。第 11 章是关于测试的,
即使有 Rust 的安全保证,这也是确保您的程序的
逻辑是正确的。在第 12 章中,我们将构建自己的子集实现
of 功能,用于搜索文本
在文件中。为此,我们将使用我们在
前几章。grep
第 13 章探讨了闭包和迭代器:Rust 的特性来自 函数式编程语言。在第 14 章中,我们将更深入地研究 Cargo 》的深度,并讨论与他人共享库的最佳实践。 第 15 章讨论了标准库提供的智能指针和 支持其功能的 trait。
在第 16 章中,我们将介绍并发编程的不同模型 并讨论 Rust 如何帮助您无所畏惧地在多个线程中编程。 第 17 章着眼于 Rust 惯用语与面向对象编程的比较 您可能熟悉的原则。
第 18 章是关于模式和模式匹配的参考,它们非常强大 在整个 Rust 程序中表达想法的方式。第 19 章包含一个 感兴趣的高级主题的大杂烩,包括不安全的 Rust、宏和 更多关于 lifetimes、traits、types、functions 和 closure 的信息。
在第 20 章中,我们将完成一个项目,我们将在其中实现一个低级 多线程 Web 服务器!
最后,一些附录在 更像引用的格式。附录 A 涵盖了 Rust 的关键字,附录 B 涵盖了 Rust 的运算符和符号,附录 C 涵盖了可派生的 trait 提供,附录 D 涵盖了一些有用的开发 工具和附录 E 介绍了 Rust 版本。在附录 F 中,您可以找到 的翻译,在附录 G 中,我们将介绍 Rust 是如何制作的,以及 什么是 nightly Rust。
阅读这本书没有错误的方法:如果你想跳过,那就去做吧! 如果您遇到任何情况,您可能必须跳回前面的章节 混乱。但做任何对你有用的事情。
学习 Rust 过程的一个重要部分是学习如何阅读 编译器显示的错误消息:这些将指导您编写有效的代码。 因此,我们将提供许多不会与错误一起编译的示例 消息,编译器将在每种情况下向您显示。知道,如果您输入 并随机运行一个示例,则可能无法编译!请务必阅读 周围的文本,以查看您尝试运行的示例是否旨在 错误。Ferris 还将帮助您区分不工作的代码:
摩天 | 意义 |
---|---|
此代码无法编译! | |
此代码 panic! | |
此代码不会产生所需的行为。 |
在大多数情况下,我们会引导您找到任何代码的正确版本,这些代码 不编译。
源代码
生成本书的源文件可以在 GitHub 上找到。
本文档由官方文档翻译而来,如有差异请以官方英文文档(https://doc.rust-lang.org/)为准