Rust 項目開發實戰 Creative Projects for Rust Programmers: Build exciting projects on domains such as web apps, WebAssembly, games, and parsing

Milanesi, Carlo 譯 程曉磊

  • Rust 項目開發實戰-preview-1
  • Rust 項目開發實戰-preview-2
  • Rust 項目開發實戰-preview-3
Rust 項目開發實戰-preview-1

買這商品的人也買了...

商品描述

《Rust項目開發實戰》詳細闡述了與Rust語言開發相關的基本解決方案,主要包括Rust語言簡介、存儲和檢索數據、創建REST Web服務、創建完整的服務器端Web應用程序、利用Yew創建客戶端WebAssembly應用程序、利用quicksilver創建WebAssembly游戲、利用ggez創建2D桌面游戲、解釋和編譯所用的解析器組合器、使用Nom創建電腦模擬器、創建Linux內核模塊、Rust語言的未來等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。

目錄大綱

目錄

第1章 Rust語言簡介 1

1.1 技術需求 1

1.2 瞭解Rust的不同版本 1

1.3 項目 4

1.4 運行本書示例 6

1.5 一些實用程序庫 6

1.5.1 偽隨機數生成器—rand庫 6

1.5.2 日誌機制—log庫 7

1.5.3 在運行期初始化靜態變量—lazy_static庫 8

1.5.4 解析命令行—structopt庫 9

1.6 本章小結 10

1.7 本章練習 10

第2章 存儲和檢索數據 13

2.1 技術需求 13

2.2 項目概覽 14

2.3 讀取TOML文件 14

2.3.1 使用toml_dynamic 15

2.3.2 使用toml_static 17

2.4 讀寫JSON文件 18

2.4.1 json_dynamic項目 20

2.4.2 json_static項目 21

2.5 讀取XML文件 21

2.6 訪問數據庫 23

2.7 訪問SQLite數據庫 24

2.8 訪問PostgreSQL數據庫 27

2.9 在Redis中存儲和檢索數據 29

2.10 整合方案 31

2.11 本章小結 31

2.12 本章練習 32

第3章 創建REST Web服務 33

3.1 技術需求 33

3.2 REST體系結構 34

3.3 項目概覽 35

3.4 背景知識和上下文環境 35

3.5 構建REST Web服務的存根程序 37

3.5.1 運行和測試服務 37

3.5.2 利用GET方法獲取資源 37

3.5.3 利用PUT方法向服務發送命名資源 38

3.5.4 利用POST方法向服務器傳遞新資源 39

3.5.5 利用DELETE方法刪除資源 39

3.5.6 發送無效的命令 40

3.5.7 實現代碼 40

3.6 構建完整的Web服務 44

3.6.1 下載文件 44

3.6.2 將字符串上傳至指定文件 45

3.6.3 將字符串上傳至新文件中 45

3.6.4 刪除一個文件 46

3.6.5 代碼實現 46

3.7 構建狀態服務器 49

3.7.1 有狀態服務器 50

3.7.2 服務API 51

3.7.3 測試服務 52

3.7.4 實現數據庫 53

3.7.5 處理查詢 53

3.8 返回JSON數據 54

3.9 本章小結 55

3.10 本章練習 55

3.11 進一步閱讀 56 

第4章 創建完整的服務器端Web應用程序 57

4.1 技術需求 57

4.2 Web應用程序的定義 57

4.3 瞭解Web應用程序的行為 58

4.4 項目概覽 60

4.5 使用Tera模板引擎 61

4.6 簡單的用戶列表 67

4.6.1 模板文件夾 69

4.6.2 其他Rust處理程序 72

4.7 CRUD應用程序 74

4.7.1 處理JavaScript代碼 76

4.7.2 HTML代碼 77

4.7.3 Rust代碼 78

4.8 利用身份驗證處理應用程序 83

4.8.1 實現過程 85

4.8.2 HTML代碼 85

4.8.3 JavaScript代碼 87

4.8.4 模擬數據庫代碼 87

4.8.5 main函數 88

4.9 本章小結 90

4.10 本章練習 91

4.11 進一步閱讀 91

第5章 利用Yew創建客戶端WebAssembly 應用程序 93

5.1 技術需求 93

5.2 Wasm簡介 94

5.3 理解MVC架構模式 94

5.3.1 實現兩種Web應用程序 95

5.3.2 MVC模式 96

5.3.3 模型 96

5.3.4 視圖 97

5.3.5 控制器 97

5.3.6 視圖實現 98

5.3.7 控制器實現 98

5.3.8 理解MVC架構 99

5.4 項目簡述 100

5.5 incr應用程序 100

5.6 adder應用程序 104

5.7 login應用程序 106

5.7.1 項目組織方式 107

5.7.2 db_access.rs文件 108

5.7.3 main.rs文件 109

5.7.4 login.rs文件 112

5.8 yauth應用程序 115

5.8.1 理解應用程序的行為 115

5.8.2 項目的組織方式 116

5.8.3 不可針對filtered_persons使用空集合 118

5.8.4 one_person.rs文件 122

5.9 訪問RESTful服務的Web應用程序 124

5.9.1 persons_db應用程序 125

5.9.2 yclient應用程序 126

5.10 本章小結 131

5.11 本章練習 132

5.12 進一步閱讀 132

第6章 利用quicksilver創建WebAssembly游戲 135

6.1 技術需求 135

6.2 項目簡介 136

6.3 理解動畫循環架構 136

6.4 實現ski項目 139

6.5 實現silent_slalom項目 144

6.6 實現assets_slalom項目 152

6.7 本章小結 157

6.8 本章練習 157

6.9 進一步閱讀 157

第7章 利用ggez創建2D桌面游戲 159

7.1 技術需求 159

7.2 項目簡介 160

7.3 瞭解線性代數 160

7.4 實現gg_ski項目 162

7.4.1 main函數 163

7.4.2 輸入處理的模式 164

7.4.3 gg_ski項目中的輸入處理 166

7.4.4 quicksilver的其他差別 167

7.5 實現gg_silent_slalom項目 172

7.6 實現gg_assets_slalom項目 174

7.7 實現gg_whac項目 175

7.7.1 資源數據 177

7.7.2 應用程序和事件的通用結構 178

7.7.3 模型的其他字段 179

7.7.4 定義一個微件 180

7.8 本章小結 182

7.9 本章練習 182

7.10 進一步閱讀 182

第8章 解釋和編譯所用的解析器組合器 183

8.1 技術需求 183

8.2 項目簡介 184

8.3 包含Calc 184

8.4 理解形式語言及其解析器 187

8.4.1 正則語言 188

8.4.2 上下文無關語言 189

8.4.3 上下文相關語言 189

8.5 使用Nom構建解析器 190

8.5.1 編譯器-編譯器和解析器組合器 191

8.5.2 Nom庫的基本知識 191

8.6 calc_parser項目 199

8.6.1 理解main.rs源文件 201

8.6.2 parser.rs源文件 202

8.7 calc_analyzer項目 209

8.7.1 檢查解析後的程序的變量 209

8.7.2 main.rs文件 212

8.7.3 symbol_table.rs文件 212

8.7.4 analyzer.rs文件 213

8.8 calc_interpreter項目 218

8.8.1 main.rs文件 219

8.8.2 symbol_table.rs文件 220

8.8.3 executor.rs文件 221

8.9 calc_compiler項目 223

8.9.1 main.rs文件 224

8.9.2 compiler.rs文件 225

8.10 本章小結 227

8.11 本章練習 228

8.12 進一步閱讀 228

第9章 使用Nom創建電腦模擬器 229

9.1 技術需求 229

9.2 項目簡介 230

9.3 簡單的機器語言 230

9.3.1 與機器語言相關的主要概念 231

9.3.2 擴展機器語言 235

9.3.3 編寫簡單的程序 236

9.3.4 Eratosthenes篩法 244

9.4 定義字節尋址的機器語言 246

9.5 nom_byte_machine項目 248

9.5.1 main.rs源文件 250

9.5.2 使用Nom庫 252

9.5.3 emulator.rs源文件 255

9.5.4 parsing_interpreter.rs源文件 258

9.5.5 translator.rs源文件 260

9.6 nom_disassembler項目 261

9.6.1 運行項目 262

9.6.2 查看源代碼 263

9.6.3 生成供調試使用的反匯編代碼 264

9.6.4 生成反匯編代碼以重組 266

9.7 本章小結 267

9.8 本章練習 267

第10章 創建Linux內核模塊 269

10.1 技術需求 269

10.2 項目簡介 270

10.3 理解內核模塊 270

10.4 boilerplate模塊 272

10.4.1 構建和運行內核模塊 273

10.4.2 構建命令 274

10.4.3 樣板模塊的源代碼 276

10.5 使用全局變量 278

10.6 分配內存 279

10.7 字符設備 281

10.7.1 構建字符設備 281

10.7.2 dots模塊的源代碼 283

10.8 本章小結 288

10.9 本章練習 289

10.10 進一步閱讀 289

第11章 Rust語言的未來 291

11.1 IDE和交互式編程 291

11.2 庫成熟度 292

11.3 異步編程 293

11.4 優化操作 298

11.5 常量泛型特性 299

11.6 嵌入式系統 300

11.7 本章小結 301

練習答案 303