Rust編程之道

書籍信息

作譯者:張漢東

出版時間:2019-01千 字 數:1018版次:01-01頁 數:580

開本:16開裝幀:I S B N :9787121354854

換版:

紙質書定價:¥128.0

內容簡介

Rust 是一門利用現代化的類型系統,有機地融合了記憶體管理、所有權語義和混合編程範式的程式語言。它不僅能科學地保證程式的正確性,還能保證記憶體安全和執行緒安全。同時,還有能與C/C++語言媲美的性能,以及能和動態語言媲美的開發效率。本書並非對語法內容進行簡單羅列講解,而是從四個維度深入全面且通透地介紹了Rust 語言。   從設計哲學出發,探索Rust 語言的內在一致性;從源碼分析入手,探索Rust 地道的編程風格;從工程角度著手,探索Rust 對健壯性的支持;從底層原理開始,探索Rust 記憶體安全的本質。本書涵蓋了Rust 2018 的特性,適合有一定編程經驗且想要學習Rust 的初學者,以及對Rust 有一定的了解,想要繼續深入學習的進階者。  

圖書目錄

第1 章 新時代的語言 .................................................................................................. 1

1.1 緣起 ........................................................................................................................... 1

1.2 設計哲學 ................................................................................................................... 3

1.2.1 記憶體安全....................................................................................................... 3

1.2.2 零成本抽象 ................................................................................................... 4

1.2.3 實用性 .......................................................................................................... 5

1.3 現狀與未來 ............................................................................................................... 7

1.3.1 語言架構....................................................................................................... 8

1.3.2 開源社區....................................................................................................... 9

1.3.3 發展前景....................................................................................................... 9

1.4 Rust 代碼如何執行 ................................................................................................ 10

1.5 小結 ......................................................................................................................... 10

第2 章 語言精要 ........................................................................................................ 11

2.1 Rust 語言的基本構成 ............................................................................................. 11

2.1.1 語言規範..................................................................................................... 11

2.1.2 編譯器 ........................................................................................................ 12

2.1.3 核心庫 ........................................................................................................ 12

2.1.4 標準庫 ........................................................................................................ 12

2.1.5 包管理器..................................................................................................... 13

2.2 語句與表達式 ......................................................................................................... 13

2.3 變數與綁定 ............................................................................................................. 14

2.3.1 位置表達式和值表達式 ............................................................................. 15

2.3.2 不可變綁定與可變綁定 ............................................................................. 15

2.3.3 所有權與引用 ............................................................................................. 16

2.4 函式與閉包 ............................................................................................................. 17

2.4.1 函式定義..................................................................................................... 17

2.4.2 作用域與生命周期 ..................................................................................... 18

2.4.3 函式指針..................................................................................................... 19

2.4.5 CTFE 機制 .................................................................................................. 20

2.4.6 閉包 ............................................................................................................ 20

2.5 流程控制 ................................................................................................................. 22

2.5.1 條件表達式 ................................................................................................. 22

2.5.2 循環表達式 ................................................................................................. 23

2.5.3 match 表達式與模式匹配 .......................................................................... 24

2.5.4 if let 和while let 表達式 ............................................................................ 25

2.6 基本數據類型 ......................................................................................................... 26

2.6.1 布爾類型..................................................................................................... 26

2.6.2 基本數字類型 ............................................................................................. 26

2.6.3 字元類型..................................................................................................... 27

2.6.4 數組類型..................................................................................................... 28

2.6.5 範圍類型..................................................................................................... 29

2.6.6 切片類型..................................................................................................... 29

2.6.7 str 字元串類型 ............................................................................................ 30

2.6.8 原生指針..................................................................................................... 31

2.6.9 never 類型 ................................................................................................... 31

2.7 複合數據類型 ......................................................................................................... 32

2.7.1 元組 ............................................................................................................ 32

2.7.2 結構體 ........................................................................................................ 33

2.7.3 枚舉體 ........................................................................................................ 36

2.8 常用集合類型 ......................................................................................................... 38

2.8.1 線性序列:向量 ......................................................................................... 38

2.8.2 線性序列:雙端佇列 ................................................................................. 39

2.8.3 線性序列:鍊表 ......................................................................................... 40

2.8.4 Key-Value 映射表:HashMap 和BTreeMap ............................................ 40

2.8.5 集合:HashSet 和BTreeSet ...................................................................... 41

2.8.6 優先佇列:BinaryHeap ............................................................................. 42  

2.10 泛型和trait ........................................................................................................... 43

2.10.1 泛型 .......................................................................................................... 43

2.10.2 trait ............................................................................................................ 44

2.11 錯誤處理 ............................................................................................................... 47

2.12 表達式優先權 ....................................................................................................... 48

2.13 注釋與列印 ........................................................................................................... 48

2.14 小結 ....................................................................................................................... 50

第3 章 類型系統 ........................................................................................................ 51

3.1 通用概念 ................................................................................................................. 51

3.1.1 類型系統的作用 ......................................................................................... 51

3.1.2 類型系統的分類 ......................................................................................... 52

3.1.3 類型系統與多態性 ..................................................................................... 53

3.2 Rust 類型系統概述 ................................................................................................ 53

3.2.1 類型大小..................................................................................................... 53

3.2.2 類型推導..................................................................................................... 58

3.3 泛型 ......................................................................................................................... 60

3.3.1 泛型函式..................................................................................................... 60

3.3.2 泛型返回值自動推導 ................................................................................. 62

3.4 深入trait ................................................................................................................. 62

3.4.1 接口抽象..................................................................................................... 63

3.4.2 泛型約束..................................................................................................... 69

3.4.3 抽象類型..................................................................................................... 71

3.4.4 標籤trait ..................................................................................................... 77

3.5 類型轉換 ................................................................................................................. 83

3.5.1 Deref 解引用 .............................................................................................. 83

3.5.2 as 操作符 .................................................................................................... 86

3.5.3 From 和Into ............................................................................................... 88

3.6 當前trait 系統的不足 ............................................................................................ 89

3.6.1 孤兒規則的局限性 ..................................................................................... 90

3.6.2 代碼復用的效率不高 ................................................................................. 91

3.6.3 抽象表達能力有待改進 ............................................................................. 93

3.7 小結 ......................................................................................................................... 94

第4 章 記憶體管理 ........................................................................................................ 95

4.1 通用概念 ................................................................................................................. 95

4.1.1 棧 ................................................................................................................ 96

4.1.2 堆 ................................................................................................................ 99

4.1.3 記憶體布局................................................................................................... 101

4.2 Rust 中的資源管理 ...............................................................................................103

4.2.1 變數和函式 ............................................................................................... 103

4.2.2 智慧型指針與RAII ..................................................................................... 106

4.2.3 記憶體泄漏與記憶體安全 ............................................................................... 110

4.2.4 複合類型的記憶體分配和布局 ................................................................... 115

4.3 小結 ........................................................................................................................ 117

第5 章 所有權系統 .................................................................................................. 119

5.1 通用概念 ................................................................................................................120

5.2 所有權機制 ............................................................................................................123

5.3 綁定、作用域和生命周期 ....................................................................................125

5.3.1 不可變與可變 ........................................................................................... 126

5.3.2 綁定的時間屬性——生命周期 ............................................................... 127

5.4 所有權借用 ............................................................................................................131

5.5 生命周期參數 ........................................................................................................135

5.5.1 顯式生命周期參數 ................................................................................... 136

5.5.2 省略生命周期參數 ................................................................................... 143

5.5.3 生命周期限定 ........................................................................................... 145

5.5.4 trait 對象的生命周期 ............................................................................... 145  

5.6 智慧型指針與所有權 ................................................................................................146

5.6.1 共享所有權 Rc和Weak ............................................................ 149

5.6.2 內部可變性Cell和RefCell ........................................................ 151

5.6.3 寫時複製Cow ................................................................................... 153

5.7 並發安全與所有權 ................................................................................................156

5.8 非詞法作用域生命周期 ........................................................................................157

5.9 小結 ........................................................................................................................161

第6 章 函式、閉包與疊代器.................................................................................... 162

6.1 函式 ........................................................................................................................162

6.1.1 函式禁止................................................................................................... 164

6.1.2 函式參數模式匹配 ................................................................................... 164

6.1.3 函式返回值 ............................................................................................... 165

6.1.4 泛型函式................................................................................................... 166

6.1.5 方法與函式 ............................................................................................... 167

6.1.6 高階函式................................................................................................... 168

6.2 閉包 ........................................................................................................................171

6.2.1 閉包的基本語法 ....................................................................................... 172

6.2.2 閉包的實現 ............................................................................................... 173

6.2.3 閉包與所有權 ........................................................................................... 178

6.2.4 閉包作為函式參數和返回值 ................................................................... 184

6.2.5 高階生命周期 ........................................................................................... 190

6.3 疊代器 ....................................................................................................................194

6.3.1 外部疊代器和內部疊代器 ....................................................................... 194

6.3.2 Iterator trait ............................................................................................... 195

6.3.3 IntoIterator trait 和疊代器 ........................................................................ 199

6.3.4 疊代器適配器 ........................................................................................... 202

6.3.5 消費器 ...................................................................................................... 207

6.3.6 自定義疊代器適配器 ............................................................................... 211

6.4 小結 ........................................................................................................................214  

第7 章 結構化編程 .................................................................................................. 216

7.1 面向對象風格編程 ................................................................................................217

7.1.1 結構體 ...................................................................................................... 217

7.1.2 枚舉體 ...................................................................................................... 225

7.1.3 析構順序................................................................................................... 230

7.2 常用設計模式 ........................................................................................................233

7.2.1 建造者模式 ............................................................................................... 234

7.2.2 訪問者模式 ............................................................................................... 236

7.2.3 RAII 模式 ................................................................................................. 239

7.3 小結 ........................................................................................................................243

第8 章 字元串與集合類型 ....................................................................................... 244

8.1 字元串 ....................................................................................................................244

8.1.1 字元編碼................................................................................................... 244

8.1.2 字元 .......................................................................................................... 247

8.1.3 字元串分類 ............................................................................................... 249

8.1.4 字元串的兩種處理方式 ........................................................................... 251

8.1.5 字元串的修改 ........................................................................................... 253

8.1.6 字元串的查找 ........................................................................................... 256

8.1.7 與其他類型相互轉換 ............................................................................... 265

8.1.8 回顧 .......................................................................................................... 270

8.2 集合類型 ................................................................................................................271

8.2.1 動態可增長數組 ....................................................................................... 271

8.2.2 映射集 ...................................................................................................... 281

8.3 理解容量 ................................................................................................................289

8.4 小結 ........................................................................................................................292

第9 章 構建健壯的程式 ........................................................................................... 294

9.1 通用概念 ................................................................................................................294

9.2 消除失敗 ................................................................................................................295

9.3 分層處理錯誤 ........................................................................................................297

9.3.1 可選值Option .................................................................................... 298

9.3.2 錯誤處理Result ............................................................................ 302

9.4 恐慌(Panic) .......................................................................................................314

9.5 第三方庫 ................................................................................................................316

9.6 小結 ........................................................................................................................319  

第10 章 模組化編程 ................................................................................................ 320

10.1 包管理 ..................................................................................................................321

10.1.1 使用Cargo 創建包 ................................................................................. 321

10.1.2 使用第三方包 ......................................................................................... 323

10.1.3 Cargo.toml 檔案格式 .............................................................................. 331

10.1.4 自定義Cargo .......................................................................................... 337

10.2 模組系統 ..............................................................................................................339

10.3 從零開始實現一個完整功能包 ..........................................................................344

10.3.1 使用Cargo 創建新項目 ......................................................................... 345

10.3.2 使用structopt 解析命令行參數 ............................................................. 345

10.3.3 定義統一的錯誤類型 ............................................................................. 347

10.3.4 讀取CSV 檔案 ....................................................................................... 348

10.3.5 替換CSV 檔案中的內容 ....................................................................... 351

10.3.6 進一步完善包 ......................................................................................... 353

10.4 可見性和私有性 ..................................................................................................358

10.5 小結 ......................................................................................................................360

第11 章 安全並發 .................................................................................................... 362

11.1 通用概念 ..............................................................................................................362

11.1.1 多進程和多執行緒 ..................................................................................... 363

11.1.2 事件驅動、異步回調和協程 ................................................................. 364

11.1.3 執行緒安全 ................................................................................................. 365

11.2 多執行緒並發編程 ..................................................................................................370

11.2.1 執行緒管理 ................................................................................................. 371

11.2.2 Send 和Sync ........................................................................................... 375

11.2.3 使用鎖進行執行緒同步 ............................................................................. 379

11.2.4 屏障和條件變數 ..................................................................................... 384

11.2.5 原子類型 ................................................................................................. 386

11.2.6 使用Channel 進行執行緒間通信 .............................................................. 388  

相關詞條

相關搜尋

熱門詞條

聯絡我們