Rust系統編程

《Rust系統編程》是2022年清華大學出版社出版的圖書,作者是普拉布·艾什沃拉。

基本介紹

  • 中文名:Rust系統編程
  • 作者:[印]普拉布·艾什沃拉
  • 譯者:劉君
  • 出版時間:2022年9月1日
  • 出版社清華大學出版社
  • ISBN:9787302616771
  • 定價:119 元
內容簡介,圖書目錄,

內容簡介

《Rust系統編程》詳細闡述了與Rust系統編程相關的基本解決方案,主要包括Rust工具鏈和項目結構,Rust程式語言之旅,Rust標準庫介紹,管理環境、命令行和時間,Rust中的記憶體管理,在Rust中使用檔案和目錄,在Rust中實現終端I/O,處理進程和信號,管理並發,處理設備I/O,學習網路編程,編寫不安全Rust和FFI等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學用書和參考手冊。

圖書目錄

第1篇 Rust系統編程入門
第1章 Rust工具鏈和項目結構 3
1.1 技術要求 3
1.2 為項目選擇正確的Rust配置 4
1.2.1 選擇Rust發布通道 4
1.2.2 選擇Rust項目類型 6
1.3 Cargo和項目結構簡介 7
1.4 使用Cargo自動化構建管理 9
1.4.1 構建一個基本的二進制項Crate 9
1.4.2 配置Cargo 11
1.4.3 構建靜態庫Crate 13
1.5 自動化依賴項管理 14
1.5.1 指定依賴項的位置 15
1.5.2 在原始碼中使用依賴包 16
1.6 編寫和運行自動化測試 16
1.6.1 用Rust編寫單元測試 17
1.6.2 用Rust編寫集成測試 18
1.6.3 控制測試執行 19
1.6.4 按順序或並行運行測試 21
1.7 生成項目文檔 21
1.7.1 在Crate中編寫內聯文檔注釋 22
1.7.2 在Markdown檔案中編寫文檔 23
1.7.3 運行文檔測試 24
1.8 小結 24
1.9 延伸閱讀 25
第2章 Rust程式語言之旅 27
2.1 技術要求 28
2.2 分析問題域 28
2.3 系統行為建模 29
2.4 構建標記化器 32
2.4.1 Tokenizer數據結構 32
2.4.2 Tokenizer數據處理 36
2.5 構建解析器 40
2.5.1 Parser數據結構 41
2.5.2 Parser方法 43
2.5.3 運算符優先權 47
2.6 構建求值器 50
2.7 處理錯誤 51
2.8 綜合演練 55
2.9 小結 57
第3章 Rust標準庫介紹 59
3.1 技術要求 59
3.2 Rust標準庫和系統編程 59
3.3 探索Rust標準庫 62
3.4 面向計算的模組 67
3.4.1 數據類型 67
3.4.2 數據處理 69
3.4.3 錯誤處理 69
3.4.4 外部函式接口 70
3.4.5 編譯器 70
3.5 面向系統調用的模組 70
3.5.1 記憶體管理 70
3.5.2 並發 72
3.5.3 檔案系統 73
3.5.4 輸入/輸出 73
3.5.5 網路連線 73
3.5.6 與特定作業系統相關的模組 73
3.5.7 時間 73
3.5.8 異步 73
3.6 構建模板引擎 74
3.7 模板語法和設計 76
3.7.1 模板檔案的常見元素列表 76
3.7.2 模板引擎的概念模型 77
3.7.3 模板引擎的工作原理 79
3.7.4 模板引擎生成HTML的步驟 80
3.7.5 新建庫項目 81
3.7.6 模板引擎的代碼結構 81
3.7.7 數據結構 82
3.7.8 關鍵函式 83
3.7.9 測試用例 84
3.8 編寫模板引擎 86
3.8.1 解析器的設計 86
3.8.2 編寫解析器 87
3.8.3 支持函式 88
3.8.4 main()函式 91
3.8.5 執行模板引擎 95
3.9 小結 96
3.10 延伸閱讀 97
第4章 管理環境、命令行和時間 99
4.1 技術要求 100
4.2 項目範圍和設計概述 100
4.2.1 要構建的內容 100
4.2.2 技術設計 103
4.3 使用Rust標準庫 106
4.3.1 路徑操作和目錄疊代 106
4.3.2 時間測量 108
4.3.3 使用環境變數 108
4.3.4 使用命令行參數 110
4.3.5 imagix庫設計方法總結 111
4.4 編寫imagix庫代碼 111
4.4.1 imagix庫的模組結構 112
4.4.2 添加依賴項 114
4.4.3 遍歷目錄條目 114
4.4.4 調整圖像大小 115
4.4.5 圖像檔案信息統計 117
4.4.6 錯誤處理 118
4.5 開發命令行應用程式 119
4.5.1 設計命令行界面 120
4.5.2 使用structopt對命令行二進制檔案進行編碼 122
4.6 小結 125
第2篇 在Rust中管理和控制系統資源
第5章 Rust中的記憶體管理 129
5.1 技術要求 130
5.2 作業系統記憶體管理的基礎知識 130
5.2.1 記憶體管理生命周期 130
5.2.2 進程的記憶體布局 134
5.3 Rust程式的記憶體布局 136
5.3.1 理解Rust程式的記憶體布局 136
5.3.2 棧、堆和靜態記憶體的特性 139
5.4 Rust記憶體管理生命周期 141
5.4.1 Rust記憶體管理生命周期概述 142
5.4.2 記憶體分配 144
5.4.3 記憶體使用和操作 146
5.4.4 Rust的所有權規則 147
5.4.5 Rust借用和引用規則 148
5.4.6 記憶體釋放 148
5.4.7 記憶體安全 149
5.5 實現動態數據結構 150
5.5.1 模板引擎設計的變化 152
5.5.2 編寫動態數據結構的代碼 154
5.6 小結 159
5.7 延伸閱讀 159
第6章 在Rust中使用檔案和目錄 161
6.1 技術要求 161
6.2 理解用於檔案操作的Linux系統調用 161
6.3 在Rust中執行檔案I/O操作 164
6.3.1 創建 166
6.3.2 打開 166
6.3.3 複製 167
6.3.4 重命名 167
6.3.5 讀取 167
6.3.6 寫入 168
6.3.7 查詢 168
6.3.8 元數據 169
6.3.9 關閉 170
6.4 了解目錄和路徑操作 170
6.4.1 讀取目錄條目的詳細信息 172
6.4.2 以編程方式創建目錄結構 173
6.4.3 動態構造路徑字元串 173
6.5 設定硬連結、符號連結和執行查詢 174
6.5.1 創建硬連結 175
6.5.2 創建和查詢符號連結 175
6.6 在Rust中編寫shell命令 176
6.6.1 代碼概述 176
6.6.2 錯誤處理 178
6.6.3 源指標計算 180
6.6.4 main()函式 184
6.7 小結 186
第7章 在Rust中實現終端I/O 187
7.1 技術要求 187
7.2 終端I/O基礎知識 188
7.2.1 終端的特性 188
7.2.2 Termion Crate 189
7.2.3 定義項目構建內容 190
7.3 處理終端用戶界面和游標 192
7.3.1 編寫數據結構和main()函式 192
7.3.2 初始化文本查看器並獲取終端大小 195
7.3.3 顯示文檔並設定終端顏色、樣式和游標位置 196
7.3.4 退出文本查看器 197
7.4 處理鍵盤輸入和滾動 198
7.4.1 偵聽用戶的按鍵 199
7.4.2 定位終端游標 200
7.4.3 在終端上啟用滾動功能 202
7.5 處理滑鼠輸入 203
7.6 小結 205
第8章 處理進程和信號 207
8.1 技術要求 207
8.2 理解Linux進程概念和系統調用 208
8.2.1 程式和進程之間的區別 208
8.2.2 程式記憶體布局和進程管理 209
8.3 深入了解Linux進程基礎知識 211
8.3.1 進程管理關鍵任務分解 211
8.3.2 創建新進程 212
8.3.3 檢查子進程的狀態 213
8.3.4 使用進程間通信 213
8.3.5 設定環境變數 213
8.3.6 終止進程 214
8.3.7 處理信號 214
8.4 使用Rust生成進程 214
8.4.1 生成新的子進程 214
8.4.2 終止進程 216
8.4.3 檢查子進程的執行狀態 217
8.5 處理I/O和環境變數 218
8.5.1 處理子進程的I/O 218
8.5.2 為子進程設定環境變數 220
8.6 處理恐慌、錯誤和信號 221
8.6.1 中止當前進程 221
8.6.2 信號處理 223
8.7 用Rust編寫shell程式 225
8.7.1 新建項目 225
8.7.2 疊代1—生成執行命令的子進程 225
8.7.3 疊代2—添加對命令參數的支持 227
8.7.4 疊代3—支持自然語言命令 228
8.7.5 測試和錯誤處理 229
8.7.6 練習和改進 230
8.8 小結 231
第9章 管理並發 233
9.1 技術要求 233
9.2 並發的基礎知識 234
9.2.1 並發與並行 234
9.2.2 多執行緒的概念 237
9.3 生成和配置執行緒 239
9.3.1 使用thread::spawn()函式 240
9.3.2 使用thread::Builder結構 241
9.4 執行緒中的錯誤處理 242
9.5 執行緒間訊息傳遞 245
9.6 通過共享狀態實現並發 247
9.6.1 互斥鎖和原子引用計數 248
9.6.2 定義程式結構 249
9.6.3 匯總共享狀態下的源檔案統計信息 250
9.7 使用計時器暫停執行緒執行 254
9.8 小結 255
第3篇 高 級 主 題
第10章 處理設備I/O 259
10.1 技術要求 259
10.2 了解Linux中設備I/O的基礎知識 260
10.2.1 設備驅動程式 260
10.2.2 設備類型 262
10.3 執行緩衝讀取和寫入操作 263
10.4 使用標準輸入和輸出 266
10.5 I/O上的連結和疊代器 268
10.6 處理錯誤和返回值 270
10.7 獲取已連線USB設備的詳細信息 272
10.7.1 設計項目 272
10.7.2 編寫數據結構和工具函式 274
10.7.3 編寫main()函式 276
10.8 小結 278
第11章 學習網路編程 279
11.1 技術要求 279
11.2 Linux中的網路連線基礎知識 280
11.3 理解Rust標準庫中的網路原語 283
11.3.1 Rust網路標準庫中的基礎數據結構 283
11.3.2 IP位址套用示例 284
11.3.3 套接字示例 286
11.4 在Rust中使用TCP和UDP進行編程 286
11.4.1 編寫UDP伺服器和客戶端 286
11.4.2 編寫TCP伺服器和客戶端 289
11.5 編寫一個TCP反向代理 290
11.5.1 代理伺服器類型 291
11.5.2 新建項目 292
11.5.3 編寫源伺服器—結構體和方法 293
11.5.4 編寫源伺服器—main()函式 295
11.5.5 測試源伺服器 298
11.5.6 編寫反向代理伺服器 299
11.5.7 測試反向代理伺服器 302
11.6 小結 303
第12章 編寫不安全Rust和FFI 305
12.1 技術要求 305
12.2 不安全Rust簡介 306
12.2.1 區分安全Rust和不安全Rust代碼 307
12.2.2 在不安全Rust中的操作 308
12.3 FFI簡介 310
12.3.1 通過FFI接口調用外部函式 310
12.3.2 跨FFI邊界共享聯合體 311
12.4 安全FFI指南 313
12.5 從C中調用Rust 314
12.5.1 項目操作步驟概述 314
12.5.2 具體操作過程 314
12.6 理解ABI 316
12.6.1 關於ABI 317
12.6.2 條件編譯選項 317
12.6.3 數據布局約定 318
12.6.4 連結選項 319
12.7 小結 319

相關詞條

熱門詞條

聯絡我們