-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
Rust權威指南 版權信息
- ISBN:9787121387067
- 條形碼:9787121387067 ; 978-7-121-38706-7
- 裝幀:平裝-膠訂
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
Rust權威指南 本書特色
本書由Rust核心開發團隊編寫而成,由淺入深地探討了Rust語言的方方面面。從學習函數、選擇數據結構及綁定變量入手,逐步介紹所有權、trait、生命周期、安全保證等高級概念,模式匹配、錯誤處理、包管理、函數式特性、并發機制等實用工具,以及兩個完整的項目開發實戰案例。 作為開源的系統級編程語言,Rust可以幫助你編寫出更為快速且更為可靠的軟件,在給予開發者底層控制能力的同時,通過深思熟慮的工程設計避免了傳統語言帶來的諸多麻煩。 本書被視為Rust開發工作的必讀書目,適合所有希望評估、入門、提高和研究Rust語言的軟件開發人員閱讀。
Rust權威指南 內容簡介
本書由Rust核心開發團隊編寫而成,由淺入深地探討了Rust語言的方方面面。從學習函數、選擇數據結構及綁定變量入手,逐步介紹所有權、trait、生命周期、安全保證等不錯概念,模式匹配、錯誤處理、包管理、函數式特性、并發機制等實用工具,以及兩個完整的項目開發實戰案例。 作為開源的系統級編程語言,Rust可以幫助你編寫出更為快速且更為可靠的軟件,在給予開發者底層控制能力的同時,通過深思熟慮的工程設計避免了傳統語言帶來的諸多麻煩。 本書被視為Rust開發工作的推薦閱讀書目,適合所有希望評估、入門、提高和研究Rust語言的軟件開發人員閱讀。
Rust權威指南 目錄
第1章 入門指南 1
安裝 1
在Linux或macOS環境中安裝Rust 2
在Windows環境中安裝Rust 3
更新與卸載 4
常見問題 4
本地文檔 4
Hello, World! 5
創建一個文件夾 5
編寫并運行一個Rust程序 6
對這個程序的剖析 7
編譯與運行是兩個不同的步驟 8
Hello, Cargo! 10
使用Cargo創建一個項目 10
使用Cargo構建和運行項目 13
以Release模式進行構建 15
學會習慣Cargo 15
總結 16
第2章 編寫一個猜數游戲 17
創建一個新的項目 18
處理一次猜測 19
使用變量來存儲值 20
使用Result類型來處理可能失敗的情況 22
通過println!中的占位符輸出對應的值 24
嘗試運行代碼 24
生成一個保密數字 25
借助包來獲得更多功能 25
生成一個隨機數 28
比較猜測數字與保密數字 31
使用循環來實現多次猜測 35
在猜測成功時優雅地退出 37
處理非法輸入 38
總結 40
第3章 通用編程概念 42
變量與可變性 43
變量與常量之間的不同 46
隱藏 47
數據類型 48
標量類型 49
復合類型 54
函數 58
函數參數 60
函數體中的語句和表達式 61
函數的返回值 63
注釋 66
控制流 67
if表達式 67
使用循環重復執行代碼 72
總結 78
第4章 認識所有權 79
什么是所有權 79
所有權規則 82
變量作用域 82
String類型 83
內存與分配 84
所有權與函數 91
返回值與作用域 92
引用與借用 94
可變引用 96
懸垂引用 99
引用的規則 101
切片 101
字符串切片 104
其他類型的切片 109
總結 109
第5章 使用結構體來組織相關聯的數據 111
定義并實例化結構體 112
在變量名與字段名相同時使用簡化版的字段初始化方法 114
使用結構體更新語法根據其他實例創建新實例 114
使用不需要對字段命名的元組結構體來創建不同的類型 115
沒有任何字段的空結構體 116
一個使用結構體的示例程序 118
使用元組來重構代碼 119
使用結構體來重構代碼:增加有意義的描述信息 120
通過派生trait增加實用功能 121
方法 124
定義方法 124
帶有更多參數的方法 127
關聯函數 128
多個impl塊 129
總結 129
第6章 枚舉與模式匹配 130
定義枚舉 131
枚舉值 131
Option枚舉及其在空值處理方面的優勢 136
控制流運算符match 140
綁定值的模式 142
匹配Option<T> 143
匹配必須窮舉所有的可能 145
_通配符 146
簡單控制流if let 146
總結 148
第7章 使用包、單元包及模塊來管理日漸復雜的項目 150
包與單元包 152
通過定義模塊來控制作用域及私有性 153
用于在模塊樹中指明條目的路徑 156
使用pub關鍵字來暴露路徑 159
使用super關鍵字開始構造相對路徑 161
將結構體或枚舉聲明為公共的 162
用use關鍵字將路徑導入作用域 165
創建use路徑時的慣用模式 166
使用as關鍵字來提供新的名稱 168
使用pub use重導出名稱 169
使用外部包 170
使用嵌套的路徑來清理眾多use語句 171
通配符 172
將模塊拆分為不同的文件 172
總結 174
第8章 通用集合類型 175
使用動態數組存儲多個值 176
創建動態數組 176
更新動態數組 177
銷毀動態數組時也會銷毀其中的元素 177
讀取動態數組中的元素 178
遍歷動態數組中的值 181
使用枚舉來存儲多個類型的值 181
使用字符串存儲UTF-8編碼的文本 183
字符串是什么 183
創建一個新的字符串 184
更新字符串 185
字符串索引 188
字符串切片 191
遍歷字符串的方法 192
字符串的確沒那么簡單 193
在哈希映射中存儲鍵值對 193
創建一個新的哈希映射 194
哈希映射與所有權 195
訪問哈希映射中的值 196
更新哈希映射 197
哈希函數 199
總結 200
第9章 錯誤處理 201
不可恢復錯誤與panic! 202
使用panic!產生的回溯信息 203
可恢復錯誤與Result 207
匹配不同的錯誤 210
失敗時觸發panic的快捷方式:unwrap和expect 212
傳播錯誤 213
要不要使用panic! 219
示例、原型和測試 220
當你比編譯器擁有更多信息時 220
錯誤處理的指導原則 221
創建自定義類型來進行有效性驗證 222
總結 225
第10章 泛型、trait與生命周期 226
通過將代碼提取為函數來減少重復工作 227
泛型數據類型 230
在函數定義中 230
在結構體定義中 234
在枚舉定義中 236
在方法定義中 237
泛型代碼的性能問題 239
trait:定義共享行為 241
定義trait 241
為類型實現trait 242
默認實現 245
使用trait作為參數 247
返回實現了trait的類型 249
使用trait約束來修復largest函數 251
使用trait約束來有條件地實現方法 254
使用生命周期保證引用的有效性 256
使用生命周期來避免懸垂引用 256
借用檢查器 257
函數中的泛型生命周期 259
生命周期標注語法 260
函數簽名中的生命周期標注 261
深入理解生命周期 264
結構體定義中的生命周期標注 266
生命周期省略 267
方法定義中的生命周期標注 270
靜態生命周期 271
同時使用泛型參數、trait約束與生命周期 272
總結 273
第11章 編寫自動化測試 274
如何編寫測試 275
測試函數的構成 275
使用assert!宏檢查結果 280
使用assert_eq!宏和assert_ne!宏判斷相等性 284
添加自定義的錯誤提示信息 287
使用should_panic檢查panic 289
使用Result<T, E>編寫測試 294
控制測試的運行方式 295
并行或串行地進行測試 296
顯示函數輸出 296
只運行部分特定名稱的測試 299
通過顯式指定來忽略某些測試 301
測試的組織結構 303
單元測試 303
集成測試 305
總結 311
第12章 I/O項目:編寫一個命令行程序 312
接收命令行參數 313
讀取參數值 314
將參數值存入變量 316
讀取文件 317
重構代碼以增強模塊化程度和錯誤處理能力 319
二進制項目的關注點分離 320
修復錯誤處理邏輯 325
從main中分離邏輯 330
將代碼分離為獨立的代碼包 333
使用測試驅動開發來編寫庫功能 335
編寫一個會失敗的測試 336
編寫可以通過測試的代碼 339
處理環境變量 343
為不區分大小寫的search函數編寫一個會失敗的測試 343
實現search_case_insensitive函數 345
將錯誤提示信息打印到標準錯誤而不是標準輸出 349
確認錯誤被寫到了哪里 350
將錯誤提示信息打印到標準錯誤 351
總結 352
第13章 函數式語言特性:迭代器與閉包 353
閉包:能夠捕獲環境的匿名函數 354
使用閉包來創建抽象化的程序行為 354
閉包的類型推斷和類型標注 361
使用泛型參數和Fn trait來存儲閉包 363
Cacher實現的局限性 367
使用閉包捕獲上下文環境 368
使用迭代器處理元素序列 371
Iterator trait和next方法 373
消耗迭代器的方法 374
生成其他迭代器的方法 375
使用閉包捕獲環境 376
使用Iterator trait來創建自定義迭代器 378
改進I/O項目 381
使用迭代器代替clone 381
使用迭代器適配器讓代碼更加清晰 385
比較循環和迭代器的性能 386
總結 388
第14章 進一步認識Cargo及crates.io 390
使用發布配置來定制構建 391
將包發布到crates.io上 392
編寫有用的文檔注釋 393
使用pub use來導出合適的公共API 397
創建crates.io賬戶 401
為包添加元數據 401
發布到crates.io 403
發布已有包的新版本 404
使用cargo yank命令從cargo.io上移除版本 404
Cargo工作空間 405
創建工作空間 405
在工作空間中創建第二個包 407
使用cargo install從crates.io上安裝可執行程序 413
使用自定義命令擴展Cargo的功能 414
總結 414
第15章 智能指針 415
使用Box<T>在堆上分配數據 417
使用Box<T>在堆上存儲數據 417
使用裝箱定義遞歸類型 418
通過Deref trait將智能指針視作常規引用 423
使用解引用運算符跳轉到指針指向的值 424
把Box<T>當成引用來操作 425
定義我們自己的智能指針 426
通過實現Deref trait來將類型視作引用 427
函數和方法的隱式解引用轉換 428
解引用轉換與可變性 430
借助Drop trait在清理時運行代碼 431
使用std::mem::drop提前丟棄值 433
基于引用計數的智能指針Rc<T> 435
使用Rc<T>共享數據 436
克隆Rc<T>會增加引用計數 439
RefCell<T>和內部可變性模式 440
使用RefCell<T>在運行時檢查借用規則 441
內部可變性:可變地借用一個不可變的值 442
將Rc<T>和RefCell<T>結合使用來實現一個擁有多重所有權的可變數據 450
循環引用會造成內存泄漏 452
創建循環引用 453
使用Weak<T>代替Rc<T>來避免循環引用 456
總結 463
第16章 無畏并發 464
使用線程同時運行代碼 466
使用spawn創建新線程 467
使用join句柄等待所有線程結束 469
在線程中使用move閉包 471
使用消息傳遞在線程間轉移數據 475
通道和所有權轉移 478
發送多個值并觀察接收者的等待過程 480
通過克隆發送者創建多個生產者 481
共享狀態的并發 483
互斥體一次只允許一個線程訪問數據 484
RefCell<T>/Rc<T>和Mutex<T>/Arc<T>之間的相似性 493
使用Sync trait和Send trait對并發進行擴展 494
t
Rust權威指南 作者簡介
Steve Klabnik,Rust文檔團隊負責人,Rust核心開發者之一,Rust布道者及高產的開源貢獻者,此前致力于Ruby等項目的開發。Carol Nichols,Rust核心團隊成員,i32、LLC聯合構建者,Rust Belt Rust會議組織者。
毛靖凱,游戲設計師,一直專注于游戲領域研發,曾負責設計和維護了多個商業游戲的基礎框架。業余時間活躍于Rust開源社區,并嘗試使用Rust來解決游戲領域中的諸多問題。唐剛,資深開發者,Rustcc社區創始人和維護者之一。目前就職于Cdot Network。使用Rust從事區塊鏈共識協議的開發工作。沙渺,嵌入式開發者,國內Rust語言社區和Raspberry Pi(樹莓派)開發社區早期參與者。負責維護多個RISC-V架構硬件平臺的基礎函數庫。
- >
經典常談
- >
推拿
- >
大紅狗在馬戲團-大紅狗克里弗-助人
- >
我與地壇
- >
二體千字文
- >
山海經
- >
【精裝繪本】畫給孩子的中國神話
- >
羅庸西南聯大授課錄