本書涵蓋了不同境環(huán)和體系架構(gòu)設(shè)計(jì)下配置Rust的技巧,并提供了解決實(shí)際問題的方案。首先介紹了Rust的核心概念,使讀者能創(chuàng)建高效、高性能的應(yīng)用,其中會(huì)使用各種Rust特性,如零成本抽象和改進(jìn)內(nèi)存管理。本書還介紹了更高級(jí)的主題(包括通道和actor),能構(gòu)建可伸縮的生產(chǎn)級(jí)別的應(yīng)用,還會(huì)學(xué)習(xí)錯(cuò)誤處理、宏和模塊化來編寫可維護(hù)的代碼。
目錄
序
前言
第1章 Rust入門 1
1.1 建立環(huán)境 1
1.1.1 準(zhǔn)備工作 2
1.1.2 實(shí)現(xiàn)過程 2
1.1.3 工作原理 4
1.2 使用命令行I/O 4
1.2.1 實(shí)現(xiàn)過程 4
1.2.2 工作原理 6
1.3 創(chuàng)建和使用數(shù)據(jù)類型 7
1.3.1 實(shí)現(xiàn)過程 7
1.3.2 工作原理 11
1.4 控制執(zhí)行流 12
1.4.1 實(shí)現(xiàn)過程 12
1.4.2 工作原理 15
1.5 用crate和模塊劃分代碼 16
1.5.1 準(zhǔn)備工作 16
1.5.2 實(shí)現(xiàn)過程 16
1.5.3 工作原理 21
1.6 編寫測(cè)試和基準(zhǔn)測(cè)試 22
1.6.1 準(zhǔn)備工作 22
1.6.2 實(shí)現(xiàn)過程 22
1.6.3 工作原理 27
1.7 為代碼提供文檔 28
1.7.1 準(zhǔn)備工作 29
1.7.2 實(shí)現(xiàn)過程 29
1.7.3 工作原理 32
1.8 測(cè)試你的文檔 33
1.8.1 準(zhǔn)備工作 33
1.8.2 實(shí)現(xiàn)過程 33
1.8.3 工作原理 37
1.9 在類型間共享代碼 38
1.9.1 實(shí)現(xiàn)過程 38
1.9.2 工作原理 42
1.10 Rust中的序列類型 43
1.10.1 實(shí)現(xiàn)過程 44
1.10.2 工作原理 46
1.11 調(diào)試Rust 47
1.11.1 準(zhǔn)備工作 47
1.11.2 實(shí)現(xiàn)過程 47
1.11.3 工作原理 50
第2章 高級(jí)Rust進(jìn)階 52
2.1 用枚舉創(chuàng)建有意義的數(shù) 52
2.1.1 實(shí)現(xiàn)過程 52
2.1.2 工作原理 56
2.2 沒有null 57
2.2.1 實(shí)現(xiàn)過程 57
2.2.2 工作原理 60
2.3 使用模式匹配的復(fù)雜條件 60
2.3.1 實(shí)現(xiàn)過程 61
2.3.2 工作原理 66
2.4 實(shí)現(xiàn)自定義迭代器 67
2.4.1 準(zhǔn)備工作 67
2.4.2 實(shí)現(xiàn)過程 67
2.4.3 工作原理 70
2.5 高效地過濾和轉(zhuǎn)換序列 71
2.5.1 準(zhǔn)備工作 71
2.5.2 實(shí)現(xiàn)過程 71
2.5.3 工作原理 74
2.6 以u(píng)nsafe方式讀取內(nèi)存 75
2.6.1 實(shí)現(xiàn)過程 75
2.6.2 工作原理 77
2.7 共享所有權(quán) 78
2.7.1 準(zhǔn)備工作 78
2.7.2 實(shí)現(xiàn)過程 79
2.7.3 工作原理 82
2.8 共享可變所有權(quán) 82
2.8.1 準(zhǔn)備工作 83
2.8.2 實(shí)現(xiàn)過程 83
2.8.3 工作原理 87
2.9 有顯式生命周期的引用 88
2.9.1 實(shí)現(xiàn)過程 88
2.9.2 工作原理 94
2.10 用trait綁定強(qiáng)制行為 94
2.10.1 實(shí)現(xiàn)過程 94
2.10.2 工作原理 97
2.11 使用泛型數(shù)據(jù)類型 97
2.11.1 實(shí)現(xiàn)過程 97
2.11.2 工作原理 102
第3章 用Cargo管理項(xiàng)目 104
3.1 利用工作空間組織大型項(xiàng)目 105
3.1.1 實(shí)現(xiàn)過程 105
3.1.2 工作原理 108
3.2 上傳到crates.io 110
3.2.1 準(zhǔn)備工作 110
3.2.2 實(shí)現(xiàn)過程 110
3.2.3 工作原理 115
3.3 使用依賴和外部crate 116
3.3.1 實(shí)現(xiàn)過程 116
3.3.2 工作原理 120
3.3.3 參考資料 121
3.4 用子命令擴(kuò)展cargo 121
3.4.1 準(zhǔn)備工作 122
3.4.2 實(shí)現(xiàn)過程 122
3.4.3 工作原理 122
3.5 用cargo測(cè)試你的項(xiàng)目 123
3.5.1 實(shí)現(xiàn)過程 123
3.5.2 工作原理 127
3.6 使用cargo持續(xù)集成 128
3.6.1 準(zhǔn)備工作 128
3.6.2 實(shí)現(xiàn)過程 128
3.6.3 工作原理 131
3.7 定制構(gòu)建 132
3.7.1 實(shí)現(xiàn)過程 132
3.7.2 工作原理 134
第4章 無畏并發(fā) 136
4.1 將數(shù)據(jù)移入線程 136
4.1.1 實(shí)現(xiàn)過程 137
4.1.2 工作原理 140
4.2 管理多個(gè)線程 141
4.2.1 實(shí)現(xiàn)過程 141
4.2.2 工作原理 142
4.3 使用通道在線程間通信 143
4.3.1 實(shí)現(xiàn)過程 143
4.3.2 工作原理 146
4.4 共享可變狀態(tài) 146
4.4.1 實(shí)現(xiàn)過程 146
4.4.2 工作原理 148
4.5 Rust中的多進(jìn)程 149
4.5.1 實(shí)現(xiàn)過程 149
4.5.2 工作原理 152
4.6 使順序代碼變?yōu)椴⑿?152
4.6.1 實(shí)現(xiàn)過程 152
4.6.2 工作原理 158
4.7 向量中的并發(fā)數(shù)據(jù)處理 158
4.7.1 實(shí)現(xiàn)過程 159
4.7.2 工作原理 166
4.8 共享不可變狀態(tài) 166
4.8.1 實(shí)現(xiàn)過程 167
4.8.2 工作原理 171
4.9 使用actor處理異步消息 171
4.9.1 實(shí)現(xiàn)過程 171
4.9.2 工作原理 174
4.10 使用future的異步編程 175
4.10.1 實(shí)現(xiàn)過程 175
4.10.2 工作原理 176
第5章 處理錯(cuò)誤和其他結(jié)果 178
5.1 負(fù)責(zé)任地恐慌 178
5.1.1 實(shí)現(xiàn)過程 178
5.1.2 工作原理 181
5.2 處理多個(gè)錯(cuò)誤 182
5.2.1 實(shí)現(xiàn)過程 182
5.2.2 工作原理 184
5.3 處理異常結(jié)果 185
5.3.1 實(shí)現(xiàn)過程 185
5.3.2 工作原理 188
5.4 無縫的錯(cuò)誤處理 188
5.4.1 實(shí)現(xiàn)過程 188
5.4.2 工作原理 190
5.5 定制錯(cuò)誤 191
5.5.1 實(shí)現(xiàn)過程 191
5.5.2 工作原理 193
5.6 彈性編程 193
5.6.1 實(shí)現(xiàn)過程 193
5.6.2 工作原理 194
5.7 使用外部crate來完成錯(cuò)誤處理 194
5.7.1 實(shí)現(xiàn)過程 195
5.7.2 工作原理 196
5.8 Option和Result間轉(zhuǎn)移 197
5.8.1 實(shí)現(xiàn)過程 197
5.8.2 工作原理 199
第6章 用宏表達(dá) 200
6.1 在Rust中構(gòu)建自定義宏 200
6.1.1 實(shí)現(xiàn)過程 201
6.1.2 工作原理 202
6.2 用宏實(shí)現(xiàn)匹配 203
6.2.1 實(shí)現(xiàn)過程 203
6.2.2 工作原理 205
6.3 使用預(yù)定義的宏 206
6.3.1 實(shí)現(xiàn)過程 206
6.3.2 工作原理 208
6.4 使用宏生成代碼 209
6.4.1 實(shí)現(xiàn)過程 209
6.4.2 工作原理 212
6.5 宏重載 213
6.5.1 實(shí)現(xiàn)過程 213
6.5.2 工作原理 216
6.6 為參數(shù)范圍使用重復(fù) 216
6.6.1 實(shí)現(xiàn)過程 217
6.6.2 工作原理 219
6.7 不要自我重復(fù) 219
6.7.1 實(shí)現(xiàn)過程 220
6.7.2 工作原理 222
第7章 與其他語言集成 223
7.1 包含遺留C代碼 223
7.1.1 準(zhǔn)備工作 224
7.1.2 實(shí)現(xiàn)過程 225
7.1.3 工作原理 229
7.2 從Node.js使用FFI調(diào)用Rust 231
7.2.1 準(zhǔn)備工作 231
7.2.2 實(shí)現(xiàn)過程 232
7.2.3 工作原理 235
7.3 在瀏覽器中運(yùn)行Rust 236
7.3.1 準(zhǔn)備工作 236
7.3.2 實(shí)現(xiàn)過程 237
7.3.3 工作原理 241
7.4 使用Rust和Python 242
7.4.1 準(zhǔn)備工作 242
7.4.2 實(shí)現(xiàn)過程 243
7.4.3 工作原理 249
7.5 為遺留應(yīng)用生成綁定 250
7.5.1 準(zhǔn)備工作 250
7.5.2 實(shí)現(xiàn)過程 251
7.5.3 工作原理 255
第8章 Web安全編程 256
8.1 建立 Web服務(wù)器 256
8.1.1 準(zhǔn)備工作 257