內容簡介
《Rust編程從入門到實戰》是一部Rust程式語言的編程手冊,第1~3章為Rust前置知識,介紹了開發環境搭建、第一個Rust程式以及語言的輸入輸出;第4~16章為Rust基礎語法知識,介紹了Rust基礎的語法和必要的語言使用規則,其中包括Rust所有權、生命周期以及特性等重要語言概念的介紹;第17~27章為Rust實用操作,介紹了檔案與I/O、無畏並發、Web編程等重要的經典開發實戰以及屬性、宏、“不安全”語法等Rust高級編程。 《Rust編程從入門到實戰》適合Rust語言初學者學習使用,也可供Rust開發者參考使用,還可作為高等院校相關專業的教材。
圖書目錄
第1章 Rust程式語言概述 1
1.1 程式語言 1
1.2 Rust語言 2
1.2.1 為什麼選擇Rust 2
1.2.2 在哪裡能使用Rust 2
1.3 Hello, Rust! 3
第2章 開發環境 4
2.1 工具鏈 4
2.1.1 Windows系統上的安裝 4
2.1.2 在GNU/Linux上安裝 6
2.1.3 在其他作業系統上安裝 7
2.1.4 卸載 7
2.2 集成開發環境 7
2.3 CLion安裝與部署 8
2.3.1 下載和安裝CLion 8
2.3.2 配置CLion 9
第3章 開發命令行程式 13
3.1 輸出到命令行 13
3.2 詳細輸出 14
3.3 從命令行輸入 15
3.4 從命令參數中獲取 16
第4章 基礎語法 18
4.1 變數 18
4.2 重影 20
4.3 常量 20
4.4 靜態變數 21
第5章 Rust數據類型 23
5.1 整數型 23
5.2 浮點數型 24
5.3 數學運算 24
5.3.1 基礎運算 24
5.3.2 數學函式 24
5.4 布爾型 25
5.5 邏輯運算 25
5.6 字元型 26
5.7 字元串 27
5.8 元組 28
5.9 數組 29
第6章 注釋 31
6.1 常規注釋 31
6.2 說明文檔注釋 31
6.3 生成工程文檔 33
第7章 函式 34
7.1 函式的聲明 34
7.2 函式語句與函式表達式 35
7.2.1 函式語句與表達式 35
7.2.2 函式返回值 35
7.2.3 函式表達式 36
7.3 函式對象 37
7.4 閉包(Lambda表達式) 37
第8章 條件語句 39
8.1 if-else 語句 39
8.2 三元運算符 40
8.3 match語句——Rust中的switch 41
第9章 循環結構 43
9.1 while循環 43
9.2 for 循環 44
9.3 loop 循環 45
第10章 所有權 47
10.1 記憶體管理 47
10.1.1 記憶體的概念 47
10.1.2 主流的記憶體管理機制 48
10.2 所有權機制 48
10.2.1 變數範圍 49
10.2.2 生命周期 49
10.2.3 轉移 50
10.2.4 複製 50
10.2.5 引用和借用 51
10.2.6 垂懸引用 51
10.3 與函式相關的所有權 52
10.3.1 參數所有權 52
10.3.2 返回值所有權 53
10.4 引用類型 54
10.4.1 引用的用途 54
10.4.2 可變引用 55
10.4.3 解引用運算符 56
第11章 切片類型 58
11.1 字元串切片 58
11.2 數組切片 59
第12章 複合類型 60
12.1 結構體 60
12.1.1 結構體的定義 60
12.1.2 結構體的實例化 60
12.1.3 結構體所有權 61
12.1.4 結構體方法 64
12.1.5 元組結構體 66
12.1.6 單元結構體 66
12.2 枚舉類 66
12.2.1 枚舉類的定義 67
12.2.2 枚舉類的match語法 68
12.2.3 if-let語法 69
12.2.4 枚舉類的方法 70
第13章 泛型 72
13.1 泛型函式 72
13.2 複合類型的泛型 73
13.2.1 泛型結構體 73
13.2.2 泛型枚舉類 74
13.3 impl泛型 75
13.3.1 對泛型類實現方法 75
13.3.2 對具體類實現方法 76
13.3.3 泛型方法 76
第14章 錯誤處理與空值 78
14.1 錯誤與錯誤處理 78
14.2 不可恢復錯誤 78
14.3 可恢復錯誤 79
14.3.1 Result枚舉類 80
14.3.2 可恢復錯誤的傳遞 81
14.3.3 Error類型和它的kind方法 82
14.4 “空引用” 83
14.4.1 Null的概念 84
14.4.2 Option枚舉類 84
第15章 工程組織和訪問權 86
15.1 工程組織概念 86
15.1.1 箱 86
15.1.2 包 87
15.1.3 模組 87
15.2 訪問權 88
15.2.1 模組訪問權 88
15.2.2 結構體訪問權 89
15.2.3 枚舉類訪問權 90
15.3 use 關鍵字 90
15.4 引用標準庫 91
15.5 多源檔案工程 92
15.5.1 新建源檔案 92
15.5.2 運行多源檔案程式 92
15.6 Cargo 93
15.6.1 Cargo是什麼 93
15.6.2 Cargo功能 93
15.6.3 Cargo導入外部包 94
第16章 特性 96
16.1 定義特性 96
16.2 實現特性 96
16.3 默認特性 98
16.4 特性作參數 99
16.4.1 常規特性參數 99
16.4.2 泛型特性參數 100
16.4.3 特性疊加 101
16.5 特性作返回值 102
16.6 有條件的實現方法 104
第17章 檔案與I/O 105
17.1 關於檔案的概念 105
17.1.1 檔案 105
17.1.2 流 105
17.2 打開檔案 106
17.2.1 打開檔案的種類 106
17.2.2 唯讀模式 106
17.3 創建新檔案模式 109
17.3.1 創建新檔案 109
17.3.2 覆蓋檔案 110
17.4 追加模式 110
17.5 自定義模式打開檔案 111
17.5.1 OpenOptions對象 111
17.5.2 以讀寫模式打開檔案 112
17.6 寫入和讀取二進制信息 114
17.7 檔案系統 115
17.7.1 列出目錄 115
17.7.2 創建目錄 116
17.7.3 刪除檔案或目錄 116
第18章 數據結構與集合 118
18.1 線性數據結構 118
18.1.1 向量 120
18.1.2 雙端向量 124
18.1.3 鍊表 125
18.2 字元串 125
18.2.1 將數據轉換為字元串 126
18.2.2 拼接字元串 127
18.2.3 字元串截取 128
18.2.4 UTF-8編碼 129
18.3 映射表 131
18.3.1 散列映射表 131
18.3.2 B樹映射表 132
18.4 集 133
18.4.1 散列集 133
18.4.2 B樹集 135
18.5 堆 136
18.5.1 二叉堆 136
18.5.2 從向量創建堆 137
第19章 面向對象編程思想的實現 139
19.1 類 139
19.2 對象 141
19.3 封裝 142
19.4 繼承 143
19.5 多態 145
第20章 堆記憶體區 147
20.1 記憶體的分配方式 147
20.2 Box類型 148
20.3 Box解引用特性 150
20.4 dyn關鍵字 151
20.5 Box的所有權 151
第21章 高級引用 152
21.1 Box引用 152
21.2 Rc——引用計數 152
21.3 Mutex——互斥鎖 155
第22章 運算符方法 158
22.1 Rust運算符方法 158
22.2 實現運算符方法 159
22.2.1 實現複數加法 159
22.2.2 引用類型運算符方法實現 160
22.3 支持實現運算符方法的運算符 161
22.4 特殊的運算符 162
22.4.1 Deref和DerefMut特性 162
22.4.2 Drop特性 163
22.4.3 Fn、FnMut和FnOnce特性 164
第23章 無畏並發 168
23.1 並發和問題 168
23.1.1 數據共用 168
23.1.2 數據回收 169
23.1.3 死鎖 169
23.1.4 執行緒通信 169
23.2 多執行緒 170
23.3 執行緒通信 171
23.4 Arc執行緒安全引用計數 173
23.5 應對互斥鎖死鎖 175
23.5.1 用一個互斥鎖保護 177
23.5.2 使用“標誌互斥鎖” 178
第24章 屬性 180
24.1 屬性的使用 180
24.2 條件編譯屬性 181
24.2.1 cfg 屬性 181
24.2.2 test條件編譯 182
24.2.3 “cfg_attr”屬性 183
24.3 derive 派生屬性 183
24.4 診斷屬性 185
24.4.1 lint檢查屬性 185
24.4.2 deprecated屬性 187
24.4.3 must_use屬性 187
24.5 模組路徑屬性 188
24.6 其他屬性 189
第25章 宏 190
25.1 宏的使用 190
25.2 宏的定義 191
25.3 過程宏 193
25.3.1 類函式過程宏 193
25.3.2 派生過程宏 196
25.3.3 屬性宏 198
第26章 “不安全”語法 200
26.1 “不安全”域 200
26.2 原始指針 201
26.3 “不安全”的函式和方法 202
26.4 訪問靜態變數 203
26.5 “不安全”特性 204
26.6 共用體 205
第27章 Web伺服器程式 208
27.1 TCP簡介 208
27.1.1 建立TCP連線 209
27.1.2 搭建TCP伺服器 209
27.2 UDP簡介 212
27.3 簡易的HTTP伺服器 213