介绍

原文跟踪ch00-00-introduction.md   Commit: 0aa307c7d79d2cbf83cdf5d47780b2904e9cb03f

欢迎阅读Rust编程语言,这是一本关于Rust的入门书。Rust编程语言可帮助您编写更快,更可靠的软件。高级人体工程学和低级控制通常与编程语言设计不一致; Rust挑战冲突。通过平衡强大的技术能力和出色的开发人员体验,Rust为您提供了控制低级细节(例如内存使用)的选项,而无需传统上与此类控制相关的所有麻烦。

Rust为谁设计

出于各种原因,Rust对许多人来说都是理想的选择。让我们看看一些最重要的群体。

开发人员团队

Rust被证明是一个富有成效的工具,用于在具有不同级别的系统编程知识的大型开发团队之间进行协作。低级代码容易出现各种微妙的错误,大多数其他语言只能通过经验丰富的开发人员的大量测试和仔细的代码审查来捕获。在Rust中,编译器通过拒绝使用这些难以捉摸的错误(包括并发错误)编译代码来扮演守门员的角色。通过与编译器一起工作,团队可以将时间花在关注程序的逻辑上,而不是追逐错误。

Rust 也为系统编程世界带来了现代化的开发工具:

  • Cargo是一个包含的依赖项管理器和构建工具,它可以在Rust生态系统中轻松添加,编译和管理依赖项。
  • Rustfmt确保开发人员之间的编码风格一致。
  • Rust语言服务器支持集成开发环境(IDE)集成,以实现代码完成和内联错误消息。

通过在Rust生态系统中使用这些工具和其他工具,开发人员在编写系统级代码时可以高效工作。

学生

Rust适用于学生和有兴趣学习系统概念的人。使用Rust,许多人已经了解了操作系统开发等主题。社区非常热情和乐于回答学生的问题。通过本书的努力,Rust团队希望让更多人能够访问系统概念,特别是那些刚接触编程的人。

公司

数以百计的公司,无论规模大小,正将 Rust 用于生产环境中的多种任务。这些任务包括命令行工具、web 服务、DevOps 工具、嵌入式设备、音视频分析与转码、数字货币(cryptocurrencies)、生物信息学(bioinformatics)、搜索引擎、物联网(internet of things, IOT)程序、机器学习,甚至还包括 Firefox 浏览器的大部分内容。

开源开发者

Rust 适用于希望构建 Rust 编程语言、社区、开发工具和库的开发者。我们期望你为 Rust 语言做贡献。

重视速度和稳定性的开发者

Rust 适用于追求编程语言的速度与稳定性的开发者。所谓速度,是指你用 Rust 开发出的程序运行速度,以及 Rust 提供的程序开发速度。Rust 的编译器检查确保了增加功能和重构代码时的稳定性。这与缺少这些检查的语言形成鲜明对比,开发者通常害怕修改那些脆弱的遗留代码。通过力求零开销抽象(zero-cost abstractions),高层级的特性被编译为与手写一样快的底层代码,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章讨论了枚举,match 表达式和if let控制流结构。您将使用结构和枚举在Rust中生成自定义类型。

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

第10章深入研究泛型,特征和生命周期,它们使您能够定义适用于多种类型的代码。第11章是关于测试的,即使使用Rust的安全保证也是必要的,以确保您的程序逻辑正确。在第12章中,我们将grep从命令行工具构建我们自己的功能子集实现,该工具在文件中搜索文本。为此,我们将使用前面章节中讨论的许多概念。

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

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

第18章是关于模式和模式匹配的参考,它们是在Rust程序中表达思想的有效方式。第19章包含了一个感兴趣的高级主题的大杂烩,包括不安全的Rust,宏,以及更多关于生命期,特征,类型,函数和闭包的内容。

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

最后,一些附录以更类似参考的格式包含有关语言的有用信息。附录A涵盖了Rust的关键字,附录B涵盖了Rust的运算符和符号,附录C涵盖了标准库提供的可导出特性,附录D涵盖了一些有用的开发工具,附录E介绍了Rust版本。

读这本书没有错误的方法:如果你想跳过去,那就去吧!如果您遇到任何困惑,您可能必须跳回到前面的章节。但做任何适合你的事情。

学习Rust过程的一个重要部分是学习如何阅读编译器显示的错误消息:这些将指导您使用代码。因此,我们将提供许多不与编译器将在每种情况下显示的错误消息一起编译的示例。知道如果你输入并运行一个随机的例子,它可能无法编译!确保您阅读了周围的文本,以查看您尝试运行的示例是否意味着错误。Ferris还可以帮助您区分无意识的代码:

Ferris 意义
这些代码不能编译!
这些代码会 panic!
这些代码块包含不安全(unsafe)代码。
这些代码不会产生期望的行为。

在大部分情况,我们会指引你将任何不能编译的代码纠正为正确版本。

源代码

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

上次更新: 1/11/2019, 4:26:31 AM