介绍
欢迎阅读Rust编程语言,这是一本有关Rust的入门书籍。Rust语言将会帮助你更快,更好的编写
可信赖的软件。在编程语言的设计中,高级语言的易读性和低级语言的易控制经常是一个矛盾点。Rust
会试图解决这个冲突。通过在强大的技术能力和开发友好性之间取得某种平衡,Rust会让你在编写控制底层细节(如内存相关)时,避免常见的一些陷阱
Rust适合哪些人
Rust对于很多人来说都有很多理由适合。让我们看下一些其中最重要的人群。
开发者团队
Rust是被设计成一种在大的有各种系统能力级别的开发者团队中协作的创造性工具。低级语言很容易造成一些微妙的bug,而这些bug在其他语言中,往往只能通过广泛的测试和让经验丰富的开发者进行代码检查才能发现。在Rust中,编译器承担起‘守门员’这个角色,当代码中有这些难以捉摸的bug,包括并发的bug时,编译器会拒绝编译。通过编译器的帮助,团队可以将更多的时间花在编程逻辑而不是追踪bug上。
Rust同时也给系统编程带来了一些现代的开发者工具:
- Cargo, 内建的依赖管理器和构建工具,使得添加依赖,编译,管理依赖都十分方便,并且能与Rust生态保持一致。
- Rustfmt, 确保了不同开发者的代码风格一致性
- Rust语言服务器,增强了整合开发环境(IDE)对于代码编译和出错信息的提示。
通过这些以及其他Rust生态中的工具,使得开发者能够在开发系统层级的代码时极大得提高了。
学生
Rust适合那些对系统编程感兴趣的学生和人们。通过Rust,很多人学到了一些有关系统操作系统编程的知识点。Rust社区十分欢迎并乐于回答学生问题。Rust团队希望通过多种方式,比如这本书,帮助更多人理解系统编程的概念,尤其是那些刚学习编程的人们。
机构
成千上百或大或小的公司,在生产环境中使用Rust去实现不同的任务。包括命令行工具,web服务,开发工具,音频视频的分析与解码,加密货币,生物学,搜索引擎,物联网应用,机器学习,甚至还有火狐游览器的主要组成部分。
开源开发者
Rust被用来服务那些使用Rust来构建Rust编程语言,社区,开发工具,第三方库。我们欢迎你为Rust语言做出贡献。
重视效率和稳定性的人群
Rust适合那些重视编程语言的效率和稳定性的人们。所谓的速度,指的是你可以用Rust创建程序的速度以及你编写Rust的速度。Rust编译器的检测通过额外的特性和重构来确保稳定性。这跟那些语言中没有这些检查,让程序员害怕修改的脆弱遗留代码形成了一致鲜明的对比。通过零代价的抽象,高层次特性,Rust编译低层级速度就跟人工写的代码一样,Rust确保代码安全的同时也确保代码足够快。
Rust希望也能同时支持其他用户,上面提到的用户只是受益最大的群体。总体来说,Rust最大的目标就是消除程序员几十年下来,在安全,性能,经济性之间的权衡。欢迎尝试Rust看看它的选择是否适合你。
谁适合阅读本书
本书假定你曾使用过其他的编程语言,但是不假定具体的哪一种。我们尽可能的使本书的材料足够丰富以使任何编程背景的人们都可以理解它们。我们不会在诸如什么是编程,如何考虑编程这种问题上花费太多时间。如果你是一个刚接触编程的人士,你最好阅读一本详细介绍了编程的书籍。
如何使用本书
大体上,这本书假定你会按顺序从头往后阅读本书。后面的章节都是以前面的章节中的概念为基础构建的,而早期的章节不会太深入某个主题;我们往往会在后面的章节中回顾某个主题。
本书中有两种类型都章节:概念型章节和项目型章节。在概念型章节中,你将会了解到Rust的某个方面,在项目章节中,我们运用已经学到的知识,一起构建一个小程序。第2,12,20章是项目章节,其他都是概念型章节。
第一章说明了如何安装Rust,如何编写一个Hello world程序以及如何使用Cargo---Rust的包管理器以及构建工具。第二章是一个Rust的动手指南,里面包含了一些高层级的概念,这些概念会在稍后的章节中提供更详细的信息。如果你希望能马上动手干,那第二章是一个比较好的突破口。刚开始的时候,你可能想跳过第三章,这一章主要涵盖的是Rust和其他编程语言的相似特性,同时,你会直接深入第四章,这是有关Rust的所有权系统的。然而,如果你是一个强迫症患者,习惯在学习下一章之前学习到所有详细的知识点,你可以跳过第二章并直接进入第三章,然后在开发项目并使用一个具体知识点时,重新回到第二章。
第五章讨论了结构体和方法,第六章涵盖了枚举,match
表达式和 if let
流程控制。
之后你可以使用结构体和枚举定义自己的Rust类型。
第七章中,你会了解到关于Rust的模块系统,以及组织你的代码和公共的应用程序接口的隐私规则。第八章讨论了一些标准库提供的一些常见的数据集合,比如向量,字符串,哈希表。第九章则会探讨Rust的错误处理理念和技巧。
第十章会深入了解范型,特征和生命周期,这些使得你有能力能构建应用到多种类型的代码。第十一章都是有关测试的,即使有Rust类型保证,测试依然是必要的去确保你程序的逻辑是正确的。在第十二章,我们会构建一个用来在文件中搜索文本的工具,它是grep
命令行工具的一个子。为了得到这个目标,我们会使用很多在之前章节讨论的内容和概念。
第十三章会探讨闭包和迭代--两个Rust从函数式编程继承过来的特性。在第十四章,我们会更加深入了解Cargo并且讨论下将你的代码库分享给他人的最佳实践。第十五章,主要讨论标准库提供的智能指针以及实现其功能的特征。
第十六章,我们查看下并发编程时的不同模型以及讨论下Rust如何帮助你在多线程时如何无风险的编程。第十七章会聚焦于Rust的一些编程习惯与你之前已经熟悉的面向对象编程中一些规则的区别。
第十八章是关于模式好模式匹配的参考,在Rust中,模式是一种强大的表现灵感的方式。第十九是一个包括很多令人感兴趣的大杂烩,如非安全Rust,宏以及生命周期,特征,类型,函数,闭包等。
第二十章,我们会完成一个实现了低层级多线程的网络服务器。
最后,附录中用引用的形式包含了一些有关Rust语言的有用信息。 附录A包含了Rust的关键字,附录B包含了Rust的操作符和符号,附录C包含了标准库提供的特征推导, 附录D包含了一些有用的开发者工具,附录E解释了Rust版本信息。
可以采用任何顺序阅读本书,如果你想跳过某些内容,那就直接跳过。只要在你碰到一些疑惑时在回过头来查看早些章节即可。 你可以做任何想做的事。
学习Rust最重要的部分之一就是学习如何阅读编译器展现的错误信息:这些会引导你完成能运行的代码。因此, 我们会提供很多不通过编译的示例代码,编译器会展现各个场景下的错误信息。记住,当你使用一个某个示例,它很可能是编译不通过!确保你阅读了周围的文本以确认你正在使用的示例是否出错。 Ferris会帮助你区分那些不能运行的代码的含义。
绝大多数场景中, 我们都会引导你将编译不通过的代码改正为通过编译的代码。
源码:
本书中使用的源码可以在这里获取 Github
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。