内容简介
这是一本专为初学者量身打造的Rust编程指南,无论你是编程新手还是希望快速提升Rust编程技巧的开发者,本书都是你的不二之选。本书共有24章,包括基础知识,内存、变量和所有权,更复杂的类型,泛型、Option和Result,集合与错误处理,迭代器和闭包,生命周期和内部可变性,多线程,Box和Rust文档,测试,默认值、构建者模式和Deref,常量、不安全的Rust、外部crates,异步Rust,标准库、宏等。从基础概念到高级特性,全面覆盖,无须复杂设置。本书都将以清晰易懂的方式,引领你步入Rust编程的殿堂,开启高效、安全编程的新篇章。
本书适合想要系统学习Rust编程语言的初学者阅读,也适合经验丰富的程序员细细品味。
目录
序
前言
第1章 一些基础知识/
1.1注释/
1.2原始类型:整数、字符和
字符串/
1.3类型推断/
1.4浮点数/
1.5Hello World和打印/
1.6声明变量和代码块/
1.7显示和调试/
1.8最小值和最大值/
1.9可变性/
1.10变量遮蔽(Shadowing)/
1.11总结/
第2章 内存、变量和所有权/
2.1栈、堆和指针/
2.2字符串/
2.3常量和静态变量/
2.4引用的更多内容/
2.5可变引用/
2.5.1Rust的引用规则/
2.5.2情景一:只有一个可变引用/
2.5.3情景二:仅有不可变引用/
2.5.4情景三: 问题情况/
2.6再聊聊变量遮蔽/
2.7将引用传递给函数/
2.8复制(Copy)类型/
2.9变量没有值/
2.10关于打印的更多内容/
2.11总结/
第3章 更复杂的类型/
3.1集合类型/
3.1.1数组/
3.1.2Vec(向量)/
3.1.3元组/
3.2控制流/
3.2.1基本控制流/
3.2.2匹配语句/
3.2.3循环/
3.3总结/
第4章 构建你自己的类型/
4.1结构体和枚举概述/
4.1.1结构体/
4.1.2枚举/
4.1.3将枚举类型转换为整数/
4.1.4枚举使用多种类型/
4.1.5实现结构体和枚举/
4.2解构/
4.3引用和点运算符/
4.4总结/
第5章 泛型、Option和Result/
5.1泛型/
5.2Option和Result/
5.2.1Option/
5.2.2Result/
5.2.3其他一些模式匹配的方法/
5.3总结/
第6章 更多的集合,更多的错误处理/
6.1其他集合/
6.1.1HashMap和BTreeMap/
6.1.2HashSet和BTreeSet/
6.1.3二叉堆/
6.1.4VecDeque/
6.2问号运算符/
6.3当 panic 和 unwrap 是合适的/
6.4总结/
第7章 特性:使不同类型执行相同的操作/
7.1特性:基础知识/
7.1.1你所需要的只是方法签名/
7.1.2更复杂的例子/
7.1.3特性约束/
7.1.4Traits类似于资格认证/
7.2From特性/
7.3孤儿规则/
7.4绕过孤儿规则的方法之一是使用
新类型/
7.5在函数中接受 String 和&str/
7.6总结/
第8章 迭代器和闭包/
8.1方法链/
8.2迭代器/
8.3闭包和迭代器中的闭包/
8.4总结/
第9章 再谈迭代器和闭包!/
9.1闭包和迭代器的有用方法/
9.1.1映射和过滤/
9.1.2更多的迭代器和相关方法/
9.1.3在迭代器中检查和查找项目/
9.1.4循环、压缩、折叠等/
9.2调试宏dbg! 和 .inspect/
9.3总结/
第10章 生命周期和内部可变性/
10.1&str的类型/
10.2生命周期注解/
10.2.1函数中的生命周期/
10.2.2类型中的生命周期注解/
10.2.3匿名生命周期/
10.3内部可变性/
10.3.1Cell/
10.3.2RefCell/
10.3.3Mutex/
10.3.4RwLock/
10.4总结/
第11章 多线程及更多内容/
11.1在函数内部导入和重命名/
11.2todo! 宏/
11.3类型别名/
11.4Cow/
11.5Rc/
11.5.1Rc的存在原因/
11.5.2实践中使用 Rc/
11.5.3使用 Rc 避免生命周期注解/
11.6多线程/
11.6.1创建线程/
11.6.2使用JoinHandle等待线程
完成/
11.6.3闭包的类型/
11.6.4使用 move 关键字/
11.7总结/
第12章 关于闭包、泛型和线程的更多内容/
12.1闭包作为参数/
12.1.1一些简单的闭包/
12.1.2FnOnce、FnMut和 Fn 之间的
关系/
12.1.3闭包都是独一无二的/
12.1.4闭包示例/
12.2impl Trait/
12.2.1常规泛型与impl Trait 的比较/
12.2.2使用impl Trait 返回闭包/
12.3Arc/
12.4作用域线程/
12.5通道(Channel)/
12.5.1通道基础/
12.5.2实现一个通道/
12.6总结/
第13章 Box和Rust文档/
13.1阅读 Rust 文档/
13.1.1assert_eq!/
13.1.2搜索/
13.1.3[src]按钮/
13.1.4特性信息/
13.1.5属性/
13.2Box/
13.2.1Box的基础知识/
13.2.2将 traits 放入 Box/
13.2.3使用 Box 处理多种错误类型/
13.2.4将 trait 对象向下转型为具体
类型/
13.3总结/
第14章 测试/
14
前言/序言
感谢你购买了本书。现在正是你开始学习Rust的好时机!
在尝试了多门语言之后,Rust吸引了我。在Rust中,我找到了我所见过最友好的编译器,其惊人的性能使我对计算机如何工作,以及如何管理内存有了更深的了解。我希望你也能拥有类似的体验。
本书旨在尽可能提供最快、最简单和最完整的Rust入门。它不需要你对Rust或其他编程知识有任何了解。某种程度上,这本书是我写给自己的,那时我刚开始学习Rust。所以在很多方面它对同样是初学者的你也会非常友好,例如:
我过去是在工作的午休时间开始学习的,只有一台小笔记本计算机,甚至VS Code都无法正常运行。因此几乎所有的代码示例都不依赖VS Code这样的IDE,甚至不需要安装Rust。它们可以在Rust Playground上的浏览器中运行。
我过去对各种编程术语不太熟悉,当时许多Rust书籍将Rust与C++进行比较,这很令人困惑。因此,这本书中的用语通俗易懂,而且不需要你了解任何其他编程语言。
我过去渴望尽可能多地学习,但很难专注于太冗长的代码示例。因此,书中的代码示例相当简短,只帮你掌握一个概念足矣,这之后再进入下一个概念的学习。
我过去忙于标准库,而不太考虑外部库,在Rust中被称为箱(crate)。所以,这本书首先尽量使用标准库,其次再去查找常用的 crates。
话虽如此,Rust仍然是一种即使是经验丰富的程序员,也需要坐下来思考的语言,并非学习一遍就能掌握。许多人都说过,Rust需要大量反复学习才能逐渐适应,而且Rust对此有所回报(反之,如果你仓促行事,Rust也会惩罚你)。因此,从这个意义上来看,本书既适合初学者学习,也适合经验丰富的程序员细细品味。
近年来,Rust发展得越来越好,例如新增的Android native代码中 21% 都是用Rust编写的,甚至连Linux内核本身也是。Rust必将继续展现令人难以置信的增长,所以现在是开始学习它的最佳时机。
在我2019年开始学习Rust时,许多书籍都会列出使用Rust的大公司,以证明它是一门能胜任正式工作的成熟语言。到了今天,我想已经不太需要了——因为使用Rust的公司已经遍地都是了!
到目前为止,看到编辑和读者对这本书的反馈实在令人欣慰,这足以证明本书是一本更加容易学习且更全面的Rust语言入门书。
David Macleod