Rust编程:入门、实战与进阶

Rust编程:入门、实战与进阶

作者:朱春雷

出版社:机械工业出版社

出版年:2021-4-26

评分:7.7

ISBN:9787111679103

所属分类:行业好书

书刊介绍

内容简介

(1)作者资深:10余年开发经验,Rust技术专家、区块链技术专家,Web3meta Labs创始人兼CTO、Polkadot(波卡)技术大使。

(2)针对性强:针对性讲解Rust常用语法和重点知识,助读者快速掌握Rust编程必备能力。

(3)深入浅出:大幅降低Rust学习门槛,即使没有任何 Rust 编程经验的读者也能快速上手。

(4)学以致用:将各种常见数据结构和算法与Rust编程实战相结合,帮助读者将语法知识固化为实战能力。

(5)注重实战:以编码能力训练为核心,围绕并发编程等高阶知识进行综合训练,帮助读者快速在实战中实现提升。

这是一部注重编码能力训练的实战性著作,既能帮助读者扎实掌握Rust的主要语法知识并具备实战能力,又能指导读者快速从初学者晋级为高手。

全书秉持学以致用的原则:一方面,没有事无巨细地罗列Rust的每一个语法知识点,但是常用知识点和重要知识点悉数囊括;一方面,将各种常见数据结构和算法与Rust编程实战相结合,同时精选39道LeetCode高频算法面试题,帮助读者快速语法知识固化为实战能力。

全书共15章,分为3个部分:

第1部分(第1~11章) Rust编程必备语法

非常有针对性地讲解了Rust的常用语法,由浅入深,循序渐进,能帮助读者快速掌握Rust的必备语法知识并具备基本的编程能力

第二部分(第12~13章) Rust编码能力训练

将数组、栈、队列、哈希表、链表、树等实用的数据结构和递归、分治、回溯、二分查找、深度优先搜索、广度优先搜索、排序、动态规划等常用算法与Rust编程实战结合,并精选39道LeetCode高频算法面试真题,帮助读者将语法知识转化为编程实战能力。

第三部分(第14~15章) Rust综合进阶实战

以排序算法为主题,围绕功能拓展和性能拓展两条主线,结合工程管理、泛型、trait系统、高阶函数、闭包、迭代器、单元测试、多线程并发和异步并发等重要的语法知识点进行综合实战训练,进一步在实战中提升编程水平。

作品目录

【语言基础篇】
●第1章 初识Rust2
1.1 Rust语言简介2
1.2 搭建编程环境3
1.3 Hello Rust4
1.4 Hello Cargo5
1.5 本章小结7
●第2章 变量与数据类型8
2.1 变量和可变性8
2.1.1 变量声明8
2.1.2 变量的可变性9
2.1.3 变量遮蔽9
2.1.4 常量10
2.2 基本数据类型11
2.2.1 整数类型11
2.2.2 浮点数类型12
2.2.3 布尔类型12
2.2.4 字符类型12
2.2.5 范围类型12
2.3 复合数据类型13
2.3.1 元组类型13
2.3.2 数组类型14
2.3.3 结构体类型15
2.3.4 枚举类型17
2.4 容器类型18
2.4.1 Vec18
2.4.2 VecDeque21
2.4.3 HashMap25
2.5 字符串28
2.5.1 字符串的创建29
2.5.2 字符串的修改29
2.5.3 字符串的访问32
2.6 字面量和运算符34
2.6.1 字面量34
2.6.2 运算符34
2.7 本章小结35
●第3章 流程控制37
3.1 条件判断37
3.1.1 if条件判断37
3.1.2 if-else条件判断38
3.1.3 if-else if-else条件判断38
3.2 循环39
3.2.1 loop循环39
3.2.2 while循环40
3.2.3 for循环40
3.2.4 continue和break语句41
3.3 match模式匹配41
3.4 if let和while let模式匹配42
3.5 本章小结43
●第4章 函数、闭包与迭代器44
4.1 函数44
4.1.1 定义函数44
4.1.2 方法和函数46
4.1.3 高阶函数47
4.2 闭包50
4.2.1 基本语法50
4.2.2 类型推断50
4.2.3 捕获环境变量51
4.3 迭代器51
4.3.1 Iterator trait52
4.3.2 消费器52
4.3.3 迭代器适配器54
4.4 本章小结56
●第5章 类型系统57
5.1 泛型57
5.1.1 泛型与容器57
5.1.2 泛型与结构体58
5.1.3 泛型与枚举60
5.1.4 泛型与函数61
5.1.5 泛型与方法61
5.2 trait系统62
5.2.1 trait定义与实现62
5.2.2 trait作为参数63
5.2.3 返回实现trait的类型66
5.2.4 标准库常用trait66
5.3 类型转换71
5.3.1 原生类型间的转换71
5.3.2 数字与String类型间的转换72
5.3.3 &str与String类型间的转换73
5.4 本章小结73
●第6章 所有权系统74
6.1 通用概念74
6.1.1 栈内存与堆内存74
6.1.2 值语义与引用语义75
6.1.3 复制语义与移动语义75
6.2 所有权机制76
6.2.1 变量绑定76
6.2.2 所有权转移77
6.2.3 浅复制与深复制81
6.3 引用和借用83
6.3.1 引用与可变引用83
6.3.2 借用规则87
6.3.3 借用示例1:切片88
6.3.4 借用示例2:迭代器90
6.4 生命周期92
6.4.1 生命周期语法92
6.4.2 悬垂引用94
6.4.3 生命周期与函数96
6.4.4 生命周期与结构体98
6.4.5 生命周期省略规则100
6.5 本章小结100
●第7章 智能指针102
7.1 独占所有权的Box102
7.1.1 Box在堆上存储数据102
7.1.2 Deref解引用103
7.1.3 Drop清理资源104
7.2 共享所有权的Rc105
7.3 应对内部可变性的RefCell106
7.4 本章小结108
●第8章 并发编程109
8.1 多线程并发109
8.1.1 线程管理110
8.1.2 线程池114
8.2 异步并发115
8.2.1 async/.await语法115
8.2.2 async-std库117
8.3 本章小结119
●第9章 错误处理120
9.1 Result120
9.1.1 高效处理Result121
9.1.2 处理不同类型的错误122
9.1.3 传播错误123
9.2 Panic125
9.2.1 追踪Panic125
9.2.2 捕获Panic126
9.3 本章小结127
●第10章 模块化编程128
10.1 crate管理128
10.1.1 使用Cargo创建crate129
10.1.2 使用第三方crate129
10.2 module系统130
10.2.1 定义模块130
10.2.2 创建多文件模块131
10.2.3 多文件模块的层级关系132
10.2.4 模块的可见性133
10.2.5 使用use导入模块135
10.2.6 模块的路径136
10.2.7 使用pub use重导出136
10.2.8 加载外部crate137
10.3 本章小结138
●第11章 单元测试139
11.1 单元测试框架139
11.2 编写测试140
11.2.1 使用assert!140
11.2.2 使用assert_eq!和assert_ne!141
11.2.3 自定义失败信息142
11.3 运行测试143
11.3.1 运行部分测试144
11.3.2 忽略某些测试145
11.4 本章小结146
【编程能力训练篇】
●第12章 数据结构实战148
12.1 数组148
12.1.1 移动零149
12.1.2 加一156
12.1.3 删除排序数组中的重复项158
12.2 栈与队列159
12.2.1 最小栈160
12.2.2 有效的括号163
12.2.3 滑动窗口最大值165
12.3 哈希表168
12.3.1 两数之和170
12.3.2 有效的字母异位词172
12.3.3 字母异位词分组174
12.4 链表179
12.4.1 反转链表182
12.4.2 链表的中间节点183
12.4.3 合并两个有序链表185
12.4.4 删除链表的倒数第n个节点187
12.5 树191
12.5.1 二叉树的前序遍历195
12.5.2 二叉树的中序遍历199
12.5.3 二叉树的后序遍历202
12.5.4 二叉树的层次遍历206
12.5.5 二叉搜索树中的插入操作208
12.6 本章小结211
●第13章 算法实战213
13.1 递归、分治与回溯213
13.1.1 pow(x, n)216
13.1.2 爬楼梯218
13.1.3 括号生成220
13.1.4 子集222
13.1.5 组合224
13.1.6 N皇后227
13.2 二分查找230
13.2.1 搜索旋转排序数组231
13.2.2 寻找旋转排序数组中的最小值232
13.2.3 有效的完全平方数235
13.3 深度与广度优先搜索236
13.3.1 二叉树的最大深度239
13.3.2 二叉树的最小深度242
13.3.3 二叉搜索树中的搜索244
13.4 排序算法246
13.4.1 数组中的第k个最大元素257
13.4.2 合并区间259
13.4.3 翻转对261
13.5 动态规划264
13.5.1 爬楼梯265
13.5.2 最小路径和267
13.5.3 三角形最小路径和269
13.5.4 零钱兑换270
13.5.5 最长上升子序列273
13.5.6 编辑距离274
13.6 本章小结277
【综合实战篇】
●第14章 泛型与高阶函数实战280
14.1 工程管理280
14.2 泛型编程281
14.2.1 插入排序算法282
14.2.2 加载算法库284
14.2.3 结构体实例排序285
14.3 高阶函数编程287
14.3.1 排序算法库287
14.3.2 生成随机数据291
14.3.3 排序算法API库292
14.4 本章小结295
●第15章 并发编程实战296
15.1 多线程并发296
15.2 异步并发298
15.2.1 排序算法库的异步实现298
15.2.2 排序算法API库的异步实现302
15.2.3 创建可执行程序303
15.3 本章小结305
· · · · · ·

作者简介

朱春雷,北京大学软件工程硕士,资深Rust技术专家和区块链技术专家,有10年以上软件开发经验。 Web3meta Labs创始人兼首席技术官,Polkadot(波卡)技术大使,熟悉区块链技术框架Substrate开发。Web3meta Labs致力于为Ethereum、Polkadot等领先的区块链项目打造基础设施。

相关推荐

微信二维码