Rust 编程语言 - 中文2021版

介绍

Preview
  • 简介
  • 谁适合使用 Rust
  • 开发团队
  • 学生
  • 公司
  • 开源开发者
  • 重视速度和稳定性的人
  • 本书适合谁
  • 源代码

简介

注:本书的这个版本与由No Starch Press出版的印刷版和电子书版的《Rust编程语言》相同。

欢迎阅读《Rust编程语言》(The Rust Programming Language),这是一本介绍Rust语言的入门书籍。Rust编程语言能够帮助您编写更快、更可靠的软件。在编程语言设计中,高级的人机交互体验和低级的控制往往存在矛盾;Rust解决了这种冲突。通过平衡强大的技术能力和出色的开发人员体验,Rust让您有能力控制低级细节(如内存使用),而无需传统上与此类控制相关的所有麻烦。请注意,本书与No Starch Press出版的印刷版和电子书版的《Rust编程语言》相同。

谁适合使用 Rust

由于许多原因,Rust 对很多人来说都是理想的编程语言。以下是其中一些最重要的使用群体:

开发团队

对于拥有各种系统编程知识水平的大型开发团队,Rust 是一种非常有效的协作工具。在其他大多数编程语言中,低级代码容易出现各种微妙的 bug,这些 bug 只能通过广泛的测试和经验丰富的开发人员仔细的代码审查来发现。在 Rust 中,编译器扮演着一个门卫的角色,通过拒绝编译这些难以捉摸的 bug(包括并发 bug),与编译器一起工作的团队可以花费更多的时间关注程序的逻辑而不是追踪 bug。

Rust 还将现代化的开发工具引入了系统编程领域:

  • Cargo 是一款附带的依赖管理器和构建工具,使在 Rust 生态系统中添加、编译和管理依赖变得简单和一致。
  • Rustfmt 格式化工具确保开发人员之间编码风格的一致性。
  • Rust 语言服务器为代码补全和内联错误消息提供了集成开发环境(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章涵盖了枚举、匹配表达式和if let控制流构造。您将使用结构体和枚举来创建Rust中的自定义类型。

在第7章中,您将学习Rust的模块系统以及有关组织代码及其公共应用程序编程接口(API)的隐私规则。第8章讨论了标准库提供的一些常见集合数据结构,例如向量、字符串和哈希映射。第9章探讨了Rust的错误处理哲学和技术。

第10章深入探讨了泛型、特性和生命周期,这些功能使您能够定义适用于多种类型的代码。第11章讲解了测试,即使在Rust的安全保证下,也需要确保程序逻辑的正确性。在第12章中,我们将构建我们自己的grep命令行工具子集功能的实现,以搜索文件中的文本。为此,我们将使用我们在之前章节讨论过的许多概念。

第13章探讨了闭包和迭代器:这些特性来自于函数式编程语言。在第14章中,我们将更深入地研究Cargo,并讨论与他人共享您的库的最佳实践。第15章讨论了标准库提供的智能指针及其功能实现的特性。

在第16章中,我们将介绍并发编程的不同模型,并讨论Rust如何帮助您无畏地在多个线程中编程。第17章介绍了Rust惯用语与您可能熟悉的面向对象编程原则之间的比较。

第18章是关于模式和模式匹配的参考资料,这是在Rust程序中表达思想的强大方式。第19章包含了一些高级话题,包括不安全的Rust、宏以及有关生命周期、特性、类型、函数和闭包的更多内容。

在第20章中,我们将完成一个项目,在该项目中,我们将实现一个低级别的多线程Web服务器!

最后,一些附录以更类似参考资料的格式包含关于 Rust 语言的有用信息。附录 A 涵盖了 Rust 的关键字,附录 B 涵盖了 Rust 的运算符和符号,附录 C 涵盖了标准库提供的可派生特质,附录 D 涵盖了一些有用的开发工具,附录 E 解释了 Rust 版本。在附录 F 中,您可以找到本书的翻译,在附录 G 中,我们将介绍 Rust 是如何构建的以及夜间 Rust 是什么。

阅读本书没有固定的方式:如果您想跳过某些章节,那么请随意!如果您遇到任何困惑,可能需要跳回早期的章节。但请按照适合自己的方式进行阅读。

学习 Rust 的过程中,重要的一步是学习如何阅读编译器显示的错误信息:这些错误信息将指导您编写可工作的代码。因此,我们将提供许多不编译的示例,以及每种情况下编译器将显示的错误消息。请注意,如果您输入并运行随机示例,它可能无法编译!确保您阅读周围的文本,以确定您尝试运行的示例是否意味着出现错误。Ferris 还将帮助您区分不能正常工作的代码:

Ferris含义
image.png这段代码无法通过编译!
image.png这段代码会 Panic!
image.png这段代码的运行结果不符合预期。

在大部分情况,我们会指导你将无法通过编译的代码修改为正确版本。

源代码

生成本书的源码可以在 GitHub 上找到。