Rust編程與項目實戰

Rust編程與項目實戰

《Rust編程與項目實戰》是一本清華大學出版社出版的圖書,作者是朱文偉 李建英。

基本介紹

  • 中文名:Rust編程與項目實戰
  • 作者:朱文偉、李建英
  • 出版時間:2024年5月1日 
  • 出版社清華大學出版社
  • ISBN:9787302660248 
  • 定價:99 元 
內容簡介,作者簡介,圖書目錄,

內容簡介

Rust是一門系統程式語言,專注於安全,尤其是並發安全,它也是支持函式式、命令式以及泛型等編程範式的多範式語言。標準Rust在語法和性能上和標準C++類似,設計者可以在保證性能的同時提供更好的記憶體安全。《Rust編程與項目實戰》詳解Rust編程技巧,配套示例源碼、PPT課件、作者QQ答疑服務。
《Rust編程與項目實戰》共分17章,內容包括Rust基礎,搭建Rust開發環境,常量、變數和標量數據類型,運算符和格式化輸出,選擇結構,控制結構,函式,複合數據類型,指針,模組化編程和標準庫,標準庫中的字元串對象,多執行緒編程,標準輸入輸出和命令行參數,檔案讀寫,網路編程實戰,圖像和遊戲開發實戰,數據分析實戰。
《Rust編程與項目實戰》適用於Rust編程初學者、Rust套用開發人員、高並發和分散式開發人員、Web Assembly開發人員、遊戲開發人員以及嵌入式套用開發人員。本書也適合作為高等院校或高職高專Rust編程課程的教材。

作者簡介

朱文偉,名校計算機專業統招碩士,20多年C\C++、Java開發經驗。主導開發過密碼、圖形、人工智慧等產品。精通Linux、Windows系統開發及資料庫開發技術。著有圖書:《嵌入式Linux驅動開發實踐》《高性能Linux網路編程核心技術揭秘》《Linux C/C++伺服器開發實踐》《Qt 6.x從入門到精通》《PyQt 5從入門到精通》《Linux C與C++ 一線開發實踐》《Visual C++2017從入門到精通》《Windows C/C++加密解密實戰》《密碼學原理與Java實現》《OpenCV 4.5計算機視覺開發實戰(基於VC++)》《OpenCV 4.5計算機視覺開發實戰:基於Python》。

圖書目錄

目 錄
第 1 章 Rust基礎 1
1.1 Rust概述 1
1.1.1 Rust的來源與定義 1
1.1.2 Rust適合做什麼 2
1.1.3 Rust的特點 3
1.1.4 Rust和其他語言的總體比較 4
1.2 Rust到底值不值得學 5
1.2.1 Rust是一種全面創新的語言 6
1.2.2 引用和借用 8
1.2.3 生命期 9
1.2.4 編譯時檢查和運行時開銷 10
1.2.5 有限的面向對象特徵 11
1.2.6 擴展庫支持 13
1.2.7 Rust是一種可以進行底層開發的高級語言 14
第 2 章 搭建Rust開發環境 15
2.1 搭建Windows下的Rust開發環境 15
2.1.1 安裝vs_buildtools 15
2.1.2 安裝Rust相關工具 16
2.1.3 第一個Rust項目 17
2.1.4 VS Code搭建Rust開發環境 18
2.1.5 VS Code單步調試Rust程式 20
2.1.6 VS Code自動清除輸出視窗 22
2.1.7 VS Code修改程式自動保存 23
2.1.8 關閉rust-analyzer外掛程式的自動類型提示 23
2.2 在Linux下搭建Rust開發環境 24
2.2.1 安裝基本開發工具 24
2.2.2 啟用SSH 24
2.2.3 安裝C編譯工具 26
2.2.4 安裝和配置Rust編譯環境 27
2.2.5 命令行開發Rust程式 28
2.2.6 在VS Code中開發遠程Rust程式 30
第 3 章 常量、變數和標量數據類型 39
3.1 Rust程式結構 39
3.2 注釋 41
3.3 常量 42
3.3.1 常量的定義 42
3.3.2 直接常量 42
3.3.3 const常量 43
3.4 變數 44
3.4.1 Rust中的關鍵字 45
3.4.2 變數的命名規則 46
3.4.3 變數的定義 47
3.4.4 變數的賦值 48
3.4.5 變數的初始化 49
3.4.6 變數的可變性 49
3.4.7 變數遮蔽 50
3.4.8 字元串變數 51
3.5 數據類型的定義和分類 52
3.6 標量數據類型 53
3.6.1 整型 53
3.6.2 布爾型 57
3.6.3 字元類型 57
3.6.4 浮點型 58
3.6.5 得到變數的位元組數 59
3.7 常數的數據類型 60
3.8 作用域 61
3.9 所有權 63
3.9.1 讓我們回憶棧和堆 63
3.9.2 什麼是所有權 63
第 4 章 運算符和格式化輸出 65
4.1 運算符 65
4.1.1 賦值運算符 65
4.1.2 數學運算符 66
4.1.3 組合運算符 66
4.1.4 關係運算符 67
4.1.5 邏輯運算符 68
4.1.6 位運算符 69
4.1.7 變數類型轉換運算符 70
4.1.8 運算符的優先權 71
4.2 格式化輸出宏 72
4.2.1 默認輸出 73
4.2.2 通配符{} 73
4.2.3 通配符和位置 73
4.2.4 通配符和命名參數 74
4.2.5 輸出不同的進制數 74
4.2.6 指定寬度 76
4.2.7 填充與對齊 77
4.2.8 指定小數的精確值 78
4.2.9 輸出{和} 79
4.2.10 格式化宏format! 80
第 5 章 選擇結構 81
5.1 if選擇語句 81
5.1.1 單分支if語句 82
5.1.2 雙分支if…else語句 83
5.1.3 多分支if語句 83
5.1.4 在let語句中使用if 86
5.2 匹配控制語句match 86
5.2.1 匹配整數 87
5.2.2 匹配枚舉類型 87
5.2.3 匹配元組 88
5.2.4 匹配範圍 88
5.2.5 匹配守衛 89
5.2.6 一些經驗 89
第 6 章 控制結構 91
6.1 生活及數學中的循環控制 91
6.2 for循環 91
6.3 while循環 92
6.4 loop循環 93
6.5 break語句 93
6.5.1 break單獨使用 94
6.5.2 break帶出返回值 94
6.5.3 跳轉到指定標籤的循環 95
6.6 continue語句 96
6.6.1 continue單獨使用 96
6.6.2 跳轉到指定標籤的循環 97
第 7 章 函式 99
7.1 函式定義 99
7.2 函式參數 100
7.3 函式返回值 100
7.4 函式重載 101
7.5 函式作為參數和返回值 102
7.6 Rust泛型 102
7.6.1 什麼是泛型編程 102
7.6.2 在函式中使用泛型 103
7.6.3 在結構體中使用泛型 106
第 8 章 複合數據類型 108
8.1 數組 108
8.1.1 什麼是數組 108
8.1.2 數組的定義和初始化 109
8.1.3 輸出數組元素 110
8.1.4 得到數組長度 110
8.1.5 默認值初始化 110
8.1.6 訪問數組元素 111
8.1.7 數組切片 111
8.1.8 多維數組 113
8.2 元組 113
8.2.1 元組的定義 113
8.2.2 元組的輸出 114
8.2.3 訪問元組中的單個元素 114
8.3 結構體類型 115
8.3.1 結構體的定義 116
8.3.2 結構體實例化 116
8.3.3 結構體的方法 117
8.3.4 結構體的關聯函式 118
8.3.5 結構體的特性 119
8.3.6 結構體的注意事項 119
8.4 枚舉類型 120
8.4.1 定義枚舉類型 120
8.4.2 枚舉類型的使用 122
8.4.3 包含數據的枚舉 123
8.4.4 some類型 124
8.5 trait 125
8.5.1 成員方法 125
8.5.2 靜態方法 128
8.5.3 擴展方法 129
8.5.4 完整函式調用方法 130
8.5.5 trait約束和繼承 131
8.5.6 derive屬性 132
8.5.7 trait別名 133
8.5.8 Sized trait 133
8.5.9 默認trait 134
第 9 章 指針 135
9.1 指針的概念 135
9.1.1 地址和指針 135
9.1.2 指針變數的定義 136
9.2 指針變數的基本使用方法 137
9.2.1 指針變數的賦值 137
9.2.2 得到指針變數的大小 138
9.2.3 得到指針變數所指變數的值 139
9.2.4 指針變數做函式參數 140
9.2.5 指針變數做函式返回值 141
9.2.6 數組通過指針來引用 142
9.3 函式指針 143
9.3.1 什麼是函式指針 143
9.3.2 用函式指針變數調用函式 143
9.3.3 函式指針做函式參數 146
9.4 指針數組 148
第 10 章 模組化編程和標準庫 150
10.1 箱 151
10.1.1 創建crate庫 151
10.1.2 創建可執行的crate 152
10.1.3 可執行crate調用crate庫 152
10.2 包 153
10.2.1 創建可執行類型的包 154
10.2.2 僅編譯包 155
10.2.3 創建庫類型的包 155
10.2.4 包管理工具Cargo 157
10.2.5 典型的包結構 158
10.2.6 引用外部庫 160
10.3 模組 164
10.3.1 模組的定義 164
10.3.2 模組的結構 165
10.3.3 模組的訪問控制 166
10.3.4 模組的基本使用 169
10.3.5 創建嵌套模組 169
10.3.6 多模組多檔案 174
10.4 工作區的概念 177
10.5 標準庫概述 177
第 11 章 標準庫中的字元串對象 180
11.1 概述 180
11.2 創建字元串對象 180
11.3 字元串對象常用的方法 182
11.3.1 as_bytes得到字元串內容的位元組切片 182
11.3.2 as_mut_str轉換字元串的可變性 182
11.3.3 as_str提取整個字元串切片 182
11.3.4 capacity獲得此字元串的緩衝區容量 183
11.3.5 clear刪除字元串內容 183
11.3.6 drain刪除部分字元串 183
11.3.7 from_raw_parts創建新的字元串 184
11.3.8 from_utf16將UTF-16編碼的矢量解碼為字元串 184
11.3.9 from_utf8將位元組向量轉換為字元串 185
11.3.10 insert插入一個字元 185
11.3.11 insert_str插入一個字元串切片 186
11.3.12 into_bytes將字元串轉換為位元組向量 186
11.3.13 is_empty判斷字元串長度是否為零 186
11.3.14 len得到字元串長度 186
11.3.15 new創建一個新的空字元串 187
11.3.16 with_capacity創建指定容量的新空字元串 187
11.3.17 push追加字元 187
11.3.18 push_str追加字元串 188
11.3.19 truncate縮短字元串 188
11.3.20 pop刪除最後一個字元 188
11.3.21 remove刪除指定字元 190
11.3.22 reserve保留容量 191
11.3.23 shrink_to使用下限縮小此字元串的容量 191
11.3.24 shrink_to_fit縮小此字元串
的容量 192
11.3.25 split_off分割字元串 192
11.3.26 truncate縮短字元串 192
第 12 章 多執行緒編程 193
12.1 閉包 193
12.1.1 閉包的定義和語法 193
12.1.2 捕獲變數 194
12.1.3 閉包作為參數和返回值 195
12.1.4 閉包的使用場景 195
12.2 多執行緒編程概述 196
12.2.1 執行緒的基本概念 196
12.2.2 並發 196
12.2.3 Rust執行緒模型 197
12.3 模組std::thread 197
12.3.1 spawn創建執行緒 197
12.3.2 等待所有執行緒完成 199
12.3.3 線上程中使用其他執行緒數據 202
12.3.4 執行緒函式 204
12.3.5 available_parallelism返回默認並行度 205
12.3.6 獲得當前執行緒的名稱和id 206
12.4 執行緒間通信 208
第 13 章 標準輸入輸出和命令行參數 209
13.1 概述 209
13.2 從標準輸入流中讀取數據 210
13.2.1 trait Read 210
13.2.2 trait BufRead 212
13.2.3 標準輸入函式stdin 213
13.3 標準輸出流 215
13.4 命令行參數 217
第 14 章 檔案讀寫 219
14.1 打開檔案 219
14.2 創建檔案 220
14.3 寫檔案 221
14.4 讀檔案 221
14.5 追加內容到檔案末尾 222
14.6 刪除檔案 223
14.7 複製檔案 224
第 15 章 網路編程實戰 225
15.1 套接字的基本概念 225
15.1.1 網路程式的架構 226
15.1.2 套接字的類型 227
15.2 IP位址枚舉IpAddr 228
15.2.1 is_unspecified函式 229
15.2.2 is_loopback函式 229
15.2.3 is_multicast函式 230
15.2.4 is_ipv4函式 230
15.2.5 is_ipv6函式 230
15.3 IPv4結構Ipv4Addr 231
15.3.1 new函式 231
15.3.2 常量LOCALHOST 232
15.3.3 常量UNSPECIFIED 232
15.3.4 常量BROADCAST 232
15.3.5 octets函式 232
15.3.6 is_unspecified函式 233
15.3.7 is_loopback函式 233
15.3.8 is_link_local函式 233
15.3.9 is_multicast函式 234
15.3.10 is_broadcast函式 234
15.3.11 to_ipv6_compatible函式 235
15.3.12 to_ipv6_mapped函式 235
15.4 IPv4套接字地址SocketAddrV4 235
15.4.1 new函式 236
15.4.2 ip函式 236
15.4.3 set_ip函式 236
15.4.4 port函式 237
15.4.5 set_port函式 237
15.5 TCP套接字編程的基本步驟 237
15.6 TCP偵聽器TcpListener 238
15.6.1 bind函式 239
15.6.2 local_addr函式 239
15.6.3 try_clone函式 240
15.6.4 accept函式 240
15.6.5 incoming函式 241
15.6.6 set_ttl函式 241
15.6.7 ttl函式 242
15.6.8 take_error函式 242
15.6.9 set_nonblocking函式 242
15.7 TCP流結構TcpStream 243
15.7.1 connect函式 243
15.7.2 connect_timeout函式 244
15.7.3 peer_addr函式 244
15.7.4 local_addr函式 245
15.7.5 shutdown函式 245
15.7.6 try_clone函式 245
15.7.7 set_read_timeout函式 246
15.7.8 set_write_timeout函式 246
15.7.9 read_timeout函式 247
15.7.10 write_timeout函式 247
15.7.11 peek函式 247
15.7.12 set_nodelay函式 248
15.7.13 nodelay函式 248
15.7.14 set_ttl函式 248
15.7.15 ttl函式 249
15.7.16 take_error函式 249
15.7.17 set_nonblocking函式 249
15.8 實戰TCP伺服器客戶端編程 250
15.9 UDP套接字結構UdpSocket 251
15.9.1 bing函式 252
15.9.2 recv_from函式 253
15.9.3 peek_from函式 253
15.9.4 send_to函式 253
15.9.5 peer_addr函式 254
15.9.6 local_addr函式 254
15.9.7 local_addr函式 254
15.9.8 set_read_timeout函式 255
15.9.9 set_write_timeout函式 255
15.9.10 read_timeout函式 256
15.9.11 write_timeout函式 256
15.9.12 set_broadcast函式 256
15.9.13 broadcast函式 257
15.9.14 set_multicast_loop_v4函式 257
15.9.15 multicast_loop_v4函式 257
15.9.16 set_multicast_ttl_v4函式 257
15.9.17 multicast_ttl_v4函式 258
15.9.18 set_multicast_loop_v6函式 258
15.9.19 multicast_loop_v6函式 258
15.9.20 set_ttl函式 259
15.9.21 ttl函式 259
15.9.22 take_error函式 259
15.9.23 connect函式 260
15.9.24 send函式 260
15.9.25 recv函式 260
15.9.26 peek函式 261
15.9.27 set_nonblocking函式 261
15.9.28 實戰UDP編程 262
15.10 網路實戰案例 263
15.10.1 HTTP的工作原理 263
15.10.2 HTTP的特點 264
15.10.3 HTTP訊息結構 264
15.10.4 客戶端請求訊息 265
15.10.5 伺服器回響訊息 266
15.10.6 HTTP狀態碼 267
15.10.7 HTTP狀態碼分類 267
15.10.8 實現HTTP伺服器 268
第 16 章 圖像和遊戲開發實戰 271
16.1 圖像編程基礎 271
16.2 Piston概述 273
16.3 WindowSettings結構體 274
16.3.1 new函式 274
16.3.2 build函式 274
16.3.3 get_title函式 274
16.3.4 set_title函式 274
16.3.5 title函式 275
16.3.6 get_size函式 275
16.3.7 set_size函式 275
16.3.8 size函式 275
16.3.9 get_fullscreen函式 275
16.3.10 set_fullscreen函式 275
16.3.11 fullscreen函式 275
16.3.12 get_exit_on_esc函式 276
16.3.13 set_exit_on_esc函式 276
16.3.14 exit_on_esc函式 276
16.3.15 get_automatic_close函式 276
16.3.16 set_automatic_close函式 276
16.3.17 automatic_close函式 276
16.4 piston_window庫 280
16.5 遊戲實戰案例 286
第 17 章 數據分析實戰 295
17.1 Polars概述 295
17.1.1 什麼是Polars 295
17.1.2 Polars和Pandas對比 296
17.1.3 為什麼需要Polars 296
17.1.4 安裝Polars 297
17.1.5 創建DataFrame 297
17.1.6 載入外部數據 301
17.2 瀏覽數據 303
17.3 數據描述 304
17.4 聚合統計 305
17.5 數據清洗 306
17.5.1 處理缺失值 306
17.5.2 剔除重複值 307
17.6 數據操作 308
17.6.1 選擇列 308
17.6.2 數據篩選(過濾) 308
17.6.3 排序 309
17.6.4 合併 310
17.6.5 分組 311

相關詞條

熱門詞條

聯絡我們