最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Rust編程之道

2023-06-05 19:19 作者:彌敦道扛把子  | 我要投稿

鏈接:https://pan.baidu.com/s/1E4FA5gVj4EPA81UheIUzOg?pwd=moxq?

提取碼:moxq



? ? Rust 是一門利用現(xiàn)代化的類型系統(tǒng),有機(jī)地融合了內(nèi)存管理、所有權(quán)語(yǔ)義和混合編程范式的編程語(yǔ)言。它不僅能科學(xué)地保證程序的正確性,還能保證內(nèi)存安全和線程安全。同時(shí),還有能與C/C++語(yǔ)言媲美的性能,以及能和動(dòng)態(tài)語(yǔ)言媲美的開(kāi)發(fā)效率。本書(shū)并非對(duì)語(yǔ)法內(nèi)容進(jìn)行簡(jiǎn)單羅列講解,而是從四個(gè)維度深入全面且通透地介紹了Rust 語(yǔ)言。從設(shè)計(jì)哲學(xué)出發(fā),探索Rust 語(yǔ)言的內(nèi)在一致性;從源碼分析入手,探索Rust 地道的編程風(fēng)格;從工程角度著手,探索Rust 對(duì)健壯性的支持;從底層原理開(kāi)始,探索Rust 內(nèi)存安全的本質(zhì)。本書(shū)涵蓋了Rust 2018 的特性,適合有一定編程經(jīng)驗(yàn)且想要學(xué)習(xí)Rust 的初學(xué)者,以及對(duì)Rust 有一定的了解,想要繼續(xù)深入學(xué)習(xí)的進(jìn)階者。


作者介紹


? ? 張漢東,80后,資深軟件工程師、企業(yè)獨(dú)立咨詢師、技術(shù)作者譯者。愛(ài)好讀書(shū)、寫作,喜歡研究技術(shù)、學(xué)習(xí)之道,以及心智和認(rèn)知開(kāi)發(fā)模式。曾在互聯(lián)網(wǎng)行業(yè)沉浮十余載,先后效力于電商、社交游戲、廣告和眾籌領(lǐng)域。作為企業(yè)獨(dú)立咨詢師,先后為思科、平安科技和閃迪等公司提供咨詢服務(wù)。目前在心智教育及創(chuàng)客領(lǐng)域開(kāi)疆拓土。是《Ruby原理剖析》一書(shū)的譯者。喜歡Rust語(yǔ)言,為Rust語(yǔ)言提交了三次編譯器Bug,并協(xié)助修復(fù)其中之一。為官方Rust 2018 Guide做過(guò)貢獻(xiàn),并數(shù)次提出改進(jìn)意見(jiàn)。參與了國(guó)內(nèi)Rust社區(qū)的管理和運(yùn)營(yíng),在2018年打造了《Rust每日新聞》頻道,深受Rustacean們的喜愛(ài)。為初學(xué)者精心打造了Rust必學(xué)第一課:知乎Live《如何系統(tǒng)地學(xué)習(xí)Rust語(yǔ)言》,獲得五星好評(píng)。


關(guān)聯(lián)推薦


適合本書(shū)的讀者群體包括: 1. 有一定編程經(jīng)驗(yàn),想要學(xué)習(xí)Rust的初學(xué)者。 2. 對(duì)Rust有一定了解,還想對(duì)Rust深入學(xué)習(xí)的進(jìn)階者。 本書(shū)不適合完全沒(méi)有編程基礎(chǔ)的人學(xué)習(xí)。

目錄


第1 章 新時(shí)代的語(yǔ)言 .. 1

1.1 緣起 ... 1

1.2 設(shè)計(jì)哲學(xué) ....... 3

1.2.1 內(nèi)存安全....... 3

1.2.2 零成本抽象 ... 4

1.2.3 實(shí)用性 .......... 5

1.3 現(xiàn)狀與未來(lái) ... 7

1.3.1 語(yǔ)言架構(gòu)....... 8

1.3.2 開(kāi)源社區(qū)....... 9

1.3.3 發(fā)展前景....... 9

1.4 Rust 代碼如何執(zhí)行? 10

1.5 小結(jié) . 10

第2 章 語(yǔ)言精要 ........ 11

2.1 Rust 語(yǔ)言的基本構(gòu)成 ......... 11

2.1.1 語(yǔ)言規(guī)范..... 11

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

2.1.3 核心庫(kù) ........ 12

2.1.4 標(biāo)準(zhǔn)庫(kù) ........ 12

2.1.5 包管理器..... 13

2.2 語(yǔ)句與表達(dá)式 ......... 13

2.3 變量與綁定 . 14

2.3.1 位置表達(dá)式和值表達(dá)式 ..... 15

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

2.3.3 所有權(quán)與引用 ......... 16

2.4 函數(shù)與閉包 . 17

2.4.1 函數(shù)定義..... 17

2.4.2 作用域與生命周期 . 18

2.4.3 函數(shù)指針..... 19

2.4.5 CTFE 機(jī)制 .. 20

2.4.6 閉包? 20

2.5 流程控制 ..... 22

2.5.1 條件表達(dá)式 . 22

2.5.2 循環(huán)表達(dá)式 . 23

2.5.3 match 表達(dá)式與模式匹配 .. 24

2.5.4 if let 和while let 表達(dá)式 .... 25

2.6 基本數(shù)據(jù)類型 ......... 26

2.6.1 布爾類型..... 26

2.6.2 基本數(shù)字類型 ......... 26

2.6.3 字符類型..... 27

2.6.4 數(shù)組類型..... 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 復(fù)合數(shù)據(jù)類型 ......... 32

2.7.1 元組? 32

2.7.2 結(jié)構(gòu)體 ........ 33

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

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

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

2.8.2 線性序列:雙端隊(duì)列 ......... 39

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

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

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

2.8.6 優(yōu)先隊(duì)列:BinaryHeap ..... 42

2.9 智能指針 ..... 42

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

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

2.10.2 trait? 44

2.11 錯(cuò)誤處理 ... 47

2.12 表達(dá)式優(yōu)先級(jí) ....... 48

2.13 注釋與打印 ........... 48

2.14 小結(jié) ........... 50

第3 章 類型系統(tǒng) ........ 51

3.1 通用概念 ..... 51

3.1.1 類型系統(tǒng)的作用 ..... 51

3.1.2 類型系統(tǒng)的分類 ..... 52

3.1.3 類型系統(tǒng)與多態(tài)性 . 53

3.2 Rust 類型系統(tǒng)概述? 53

3.2.1 類型大小..... 53

3.2.2 類型推導(dǎo)..... 58

3.3 泛型 . 60

3.3.1 泛型函數(shù)..... 60

3.3.2 泛型返回值自動(dòng)推導(dǎo) ......... 62

3.4 深入trait ..... 62

3.4.1 接口抽象..... 63

3.4.2 泛型約束..... 69

3.4.3 抽象類型..... 71

3.4.4 標(biāo)簽trait ..... 77

3.5 類型轉(zhuǎn)換 ..... 83

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

3.5.2 as 操作符 .... 86

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

3.6 當(dāng)前trait 系統(tǒng)的不足 ........ 89

3.6.1 孤兒規(guī)則的局限性 . 90

3.6.2 代碼復(fù)用的效率不高 ......... 91

3.6.3 抽象表達(dá)能力有待改進(jìn) ..... 93

3.7 小結(jié) . 94

第4 章 內(nèi)存管理 ........ 95

4.1 通用概念 ..... 95

4.1.1 棧 .... 96

4.1.2 堆 .... 99

4.1.3 內(nèi)存布局... 101

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

4.2.1 變量和函數(shù) ........... 103

4.2.2 智能指針與RAII . 106

4.2.3 內(nèi)存泄漏與內(nèi)存安全 ....... 110

4.2.4 復(fù)合類型的內(nèi)存分配和布局 ....... 115

4.3 小結(jié)? 117

第5 章 所有權(quán)系統(tǒng) .. 119

5.1 通用概念 ....120

5.2 所有權(quán)機(jī)制 123

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

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

5.3.2 綁定的時(shí)間屬性——生命周期 ... 127

5.4 所有權(quán)借用 131

5.5 生命周期參數(shù) ........135

5.5.1 顯式生命周期參數(shù) ........... 136

5.5.2 省略生命周期參數(shù) ........... 143

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

5.5.4 trait 對(duì)象的生命周期 ....... 145

5.6 智能指針與所有權(quán) 146

5.6.1 共享所有權(quán) Rc和Weak? 149

5.6.2 內(nèi)部可變性Cell和RefCell?........ 151

5.6.3 寫時(shí)復(fù)制Cow?........... 153

5.7 并發(fā)安全與所有權(quán) 156

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

5.9 小結(jié) 161

第6 章 函數(shù)、閉包與迭代器 162

6.1 函數(shù) 162

6.1.1 函數(shù)屏蔽... 164

6.1.2 函數(shù)參數(shù)模式匹配 ........... 164

6.1.3 函數(shù)返回值 ........... 165

6.1.4 泛型函數(shù)... 166

6.1.5 方法與函數(shù) ........... 167

6.1.6 高階函數(shù)... 168

6.2 閉包 171

6.2.1 閉包的基本語(yǔ)法 ... 172

6.2.2 閉包的實(shí)現(xiàn) ........... 173

6.2.3 閉包與所有權(quán) ....... 178

6.2.4 閉包作為函數(shù)參數(shù)和返回值 ....... 184

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

6.3 迭代器 ........194

6.3.1 外部迭代器和內(nèi)部迭代器 ........... 194

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

6.3.3 IntoIterator trait 和迭代器? 199

6.3.4 迭代器適配器 ....... 202

6.3.5 消費(fèi)器 ...... 207

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

6.4 小結(jié) 214

第7 章 結(jié)構(gòu)化編程 .. 216

7.1 面向?qū)ο箫L(fēng)格編程 217

7.1.1 結(jié)構(gòu)體 ...... 217

7.1.2 枚舉體 ...... 225

7.1.3 析構(gòu)順序... 230

7.2 常用設(shè)計(jì)模式 ........233

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

7.2.2 訪問(wèn)者模式 ........... 236

7.2.3 RAII 模式 . 239

7.3 小結(jié) 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 與其他類型相互轉(zhuǎn)換 ....... 265

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

8.2 集合類型 ....271

8.2.1 動(dòng)態(tài)可增長(zhǎng)數(shù)組 ... 271

8.2.2 映射集 ...... 281

8.3 理解容量 ....289

8.4 小結(jié) 292

第9 章 構(gòu)建健壯的程序 ....... 294

9.1 通用概念 ....294

9.2 消除失敗 ....295

9.3 分層處理錯(cuò)誤 ........297

9.3.1 可選值Option? 298

9.3.2 錯(cuò)誤處理Result?.... 302

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

9.5 第三方庫(kù) ....316

9.6 小結(jié) 319

第10 章 模塊化編程? 320

10.1 包管理 ......321

10.1.1 使用Cargo 創(chuàng)建包 ......... 321

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

10.1.3 Cargo.toml 文件格式 ...... 331

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

10.2 模塊系統(tǒng) ..339

10.3 從零開(kāi)始實(shí)現(xiàn)一個(gè)完整功能包 ..344

10.3.1 使用Cargo 創(chuàng)建新項(xiàng)目 . 345

10.3.2 使用structopt 解析命令行參數(shù) . 345

10.3.3 定義統(tǒng)一的錯(cuò)誤類型 ..... 347

10.3.4 讀取CSV 文件 ... 348

10.3.5 替換CSV 文件中的內(nèi)容 ........... 351

10.3.6 進(jìn)一步完善包 ..... 353

10.4 可見(jiàn)性和私有性 ..358

10.5 小結(jié) ..........360

第11 章 安全并發(fā) .... 362

11.1 通用概念 ..362

11.1.1 多進(jìn)程和多線程 . 363

11.1.2 事件驅(qū)動(dòng)、異步回調(diào)和協(xié)程 ..... 364

11.1.3 線程安全 . 365

11.2 多線程并發(fā)編程 ..370

11.2.1 線程管理 . 371

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

11.2.3 使用鎖進(jìn)行線程同步 ..... 379

11.2.4 屏障和條件變量 . 384

11.2.5 原子類型 . 386

11.2.6 使用Channel 進(jìn)行線程間通信 .. 388

11.2.7 內(nèi)部可變性探究 . 397

11.2.8 線程池 ..... 399

11.2.9 使用Rayon 執(zhí)行并行任務(wù) ........ 407

11.2.10 使用Crossbeam? 409

11.3 異步并發(fā) ..412

11.3.1 生成器 ..... 413

11.3.2 Future 并發(fā)模式 . 418

11.3.3 async/await .......... 421

11.4 數(shù)據(jù)并行 ..428

11.4.1 什么是SIMD ...... 429

11.4.2 在Rust 中使用SIMD..... 430

11.5 小結(jié) ..........434

第12 章 元編程 ....... 435

12.1 反射 ..........436

12.1.1 通過(guò)is 函數(shù)判斷類型 .... 436

12.1.2 轉(zhuǎn)換到具體類型 . 437

12.1.3 非靜態(tài)生命周期類型 ..... 439

12.2 宏系統(tǒng) ......440

12.2.1 起源 ........ 440

12.2.2 Rust 中宏的種類? 441

12.2.3 編譯過(guò)程 . 442

12.2.4 聲明宏 .... 445

12.2.5 過(guò)程宏 .... 458

12.3 編譯器插件 ..........472

12.4 小結(jié) ..........475

第13 章 安全的邊界 ..... 477

13.1 Unsafe Rust 介紹 .477

13.1.1 Unsafe 語(yǔ)法 ........ 478

13.1.2 訪問(wèn)和修改可變靜態(tài)變量 ......... 480

13.1.3 Union 聯(lián)合體 ...... 480

13.1.4 解引用原生指針 . 483

13.2 基于Unsafe 進(jìn)行安全抽象 .........484

13.2.1 原生指針 . 484

13.2.2 子類型與型變 ..... 489

13.2.3 未綁定生命周期 . 494

13.2.4 Drop 檢查 ........... 495

13.2.5 NonNull指針? 505

13.2.6 Unsafe 與恐慌安全 ........ 508

13.2.7 堆內(nèi)存分配 ......... 508

13.2.8 混合代碼內(nèi)存安全架構(gòu)三大原則 ......... 510

13.3 和其他語(yǔ)言交互 ..510

13.3.1 外部函數(shù)接口 ..... 510

13.3.2 與C/C++語(yǔ)言交互 ......... 514

13.3.3 使用Rust 提升動(dòng)態(tài)語(yǔ)言性能 ... 528

13.4 Rust 與WebAssembly .....532

13.4.1 WebAssembly 要點(diǎn)介紹. 533

13.4.2 使用Rust 開(kāi)發(fā)WebAssembly ... 539

13.4.3 打造WebAssembly 開(kāi)發(fā)生態(tài) .... 541

13.5 小結(jié) ..........543

附錄A Rust 開(kāi)發(fā)環(huán)境指南 ... 544

附錄B Rust 如何調(diào)試代碼 ... 549


Rust編程之道的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
衢州市| 杭锦后旗| 尤溪县| 双峰县| 海宁市| 衡东县| 宜君县| 江山市| 长海县| 珲春市| 漳平市| 兴宁市| 河源市| 连江县| 临清市| 洞口县| 小金县| 绵竹市| 泉州市| 铁岭市| 若羌县| 玉树县| 丘北县| 颍上县| 临夏市| 天等县| 兰州市| 宝鸡市| 江永县| 霍邱县| 资兴市| 阿克陶县| 南城县| 晋宁县| 黑龙江省| 德州市| 周至县| 鸡东县| 平原县| 临湘市| 南岸区|