【語言基礎篇】
●第1章 初識Rust2
1.1 Rust語言簡介2
1.2 搭建編程環(huán)境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 字符串的創(chuàng)建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 循環(huán)39
3.2.1 loop循環(huán)39
3.2.2 while循環(huán)40
3.2.3 for循環(huán)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 捕獲環(huán)境變量51
4.3 迭代器51
4.3.1 Iterator trait52
4.3.2 消費器52
4.3.3 迭代器適配器54
4.4 本章小結56
●第5章 類型系統(tǒng)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系統(tǒng)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章 所有權系統(tǒng)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 借用規(guī)則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 生命周期省略規(guī)則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章 并發(fā)編程109
8.1 多線程并發(fā)109
8.1.1 線程管理110
8.1.2 線程池114
8.2 異步并發(fā)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創(chuàng)建crate129
10.1.2 使用第三方crate129
10.2 module系統(tǒng)130
10.2.1 定義模塊130
10.2.2 創(chuàng)建多文件模塊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章 數據結構實戰(zhàn)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 鏈表的中間節(jié)點183
12.4.3 合并兩個有序鏈表185
12.4.4 刪除鏈表的倒數第n個節(jié)點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章 算法實戰(zhàn)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 深度與廣度優(yōu)先搜索236
13.3.1 二叉樹的最大深度239
13.3.2 二叉樹的最小深度242
13.3.3 二叉搜索樹中的搜索244
13.4 排序算法246
13.4.1 數組中的第k個最大元素257
13.4.2 合并區(qū)間259
13.4.3 翻轉對261
13.5 動態(tài)規(guī)劃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
【綜合實戰(zhàn)篇】
●第14章 泛型與高階函數實戰(zhàn)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章 并發(fā)編程實戰(zhàn)296
15.1 多線程并發(fā)296
15.2 異步并發(fā)298
15.2.1 排序算法庫的異步實現298
15.2.2 排序算法API庫的異步實現302
15.2.3 創(chuàng)建可執(zhí)行程序303
15.3 本章小結305