Rust 編程:入門、實戰與進階

Rust 編程:入門、實戰與進階

作者: 朱春雷
出版社: 機械工業
出版在: 2021-04-01
ISBN-13: 9787111679103
ISBN-10: 7111679105
裝訂格式: 平裝
總頁數: 316 頁





內容描述


這是一部註重編碼能力訓練的實戰性著作,既能幫助讀者扎實掌握Rust的主要語法知識,又能指導讀者快速從初學者晉級為高手。
全書秉持學以致用的原則:一方面沒有事無巨細地羅列Rust的每一個語法知識點,但是常用知識點和重要知識點悉數囊括;一方面將各種常見數據結構、算法與Rust編程實戰相結合,同時精選39道LeetCode高頻算法面試題,幫助讀者快速將語法知識固化為實戰能力。
全書一共15章,分為3篇:
語言基礎篇(第1~11章)
非常有針對性地講解了Rust的常用語法,由淺入深,循序漸進,能幫助讀者快速掌握Rust的必備語法知識並具備基本的編程能力。
編程能力訓練篇(第12~13章)
將數組、棧、隊列、哈希表、鏈表、樹等實用的數據結構和遞歸、分治、回溯、二分查找、深度優先搜索、廣度優先搜索、排序、動態規劃等常用算法與Rust編程實戰結合,並精選39道LeetCode高頻算法面試真題,幫助讀者將語法知識轉化為編程實戰能力。
綜合實戰篇(第14~15章)
以排序算法為主題,圍繞功能拓展和性能拓展兩條主線,結合工程管理、泛型、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等領先的區塊鏈項目打造基礎設施。




相關書籍

5G + AI 智能商業:商業變革和產業機遇

作者 王寧 等

2021-04-01

5G移動通信網絡規劃與設計

作者 張傳福 趙燕 於新雁 林善亮 孫輝

2021-04-01

C++ For Dummies, 7/e (Paperback)

作者 Stephen R. Davis

2021-04-01