系列文章目錄
送書第一期 《用戶畫像:平臺構建與業務實踐》
送書活動之抽獎工具的打造 《獲取博客評論用戶抽取幸運中獎者》
送書第二期 《Spring Cloud Alibaba核心技術與實戰案例》
送書第三期 《深入淺出Java虛擬機》
送書第四期 《AI時代項目經理成長之道》
送書第五期 《Kubernetes原生微服務開發》
文章目錄
- 系列文章目錄
- ★前言
- ☆一、推薦
- ☆二、內容簡介
- 2.1、通過本書能學到什么?
- ☆三、作者簡介
- ☆四、本書特點
- ☆五、目錄
- ★總結
★前言
深入 Rust 標準庫
本書深入分析了Rust標準庫的源代碼,并厘清了分析Rust標準庫源代碼的脈絡。
全書共14章。第1章對Rust標準庫體系進行了概述性介紹;第2章分析了Rust的一些獨特性;第3~8章分析了CORE庫與ALLOC庫,這兩個庫可用于編寫操作系統內核與用戶態應用程序;第9~13章分析了STD庫,STD庫僅用于編寫用戶態應用程序;第14章對異步編程進行了簡單分析。 本書試圖以標準庫的源代碼為基礎分析Rust的一些最本質的內容,從而加快程序員掌握Rust的進程。Rust標準庫也是Rust編碼技巧、程序設計、架構設計的“結晶”,因此,本書大量篇幅集中在對這些內容的分析上。
☆一、推薦
深入 Rust 標準庫
本書試圖通過對Rust標準庫源代碼系統的分析,幫助讀者理解標準庫所定義的類型、函數,縮短讀者在Rust入門階段所花費的時間。
熟練掌握一門編程語言的最佳途徑就是深入分析、學習、理解優秀的代碼。Rust標準庫源代碼正是最理想的素材。
Rust標準庫具有完善的注釋,但這些注釋的目的是作為標準庫的指南,缺乏系統性及一些語言語法性質的內容,這促使了本書的誕生。
本書疏理了標準庫源代碼的脈絡以便讀者學習及研究,避免讀者在學習Rust時陷入一團混亂中。本書對標準庫源代碼中與所有權、生命周期、內存安全相關的部分著重進行了注釋分析,以加快讀者對這3個概念的理解。本書還對每一個標準庫數據類型背后的需求及解決方案思路進行了探討,并針對Rust的某些設計理念、設計架構、設計思路進行了重點說明,以便讀者理解Rust程序設計的思維和習慣。
☆二、內容簡介
深入 Rust 標準庫 內容簡介
本書按如下脈絡對Rust標準庫進行分析。
Rust標準庫的目錄結構展示了其精細的模塊化設計。CORE庫、ALLOC庫、STD庫的分工明晰且內聚,而Rust標準庫的概述包含了這些內容。
Rust具有一些自身的特征,包括泛型、內存安全框架、安全封裝類型、解封裝等,本書總結了這些特征。
2.1、通過本書能學到什么?
程序員精通C語言的標志是能熟練地使用指針。Rust的裸指針是學習Rust最基礎、最核心的知識點之一。本書將以裸指針為代表的內存模塊作為代碼分析的起點,*const T、*mut T、MaybeUninit、ManuallyDrop有助于讀者理解所有權、生命周期、借用等,它們是非常重要的數據類型,只有理解了這些類型,才能攻克Rust的難點。Rust提供了開放的接口以便程序員自行設計動態內存的申請與釋放機制,并使標準庫所有的動態內存都可以基于此機制。
通過對標量類型、切片類型、元組類型等基本類型的分析,就能看到Rust的基本類型可以利用特征語法無限擴展自身的行為,這展現了Rust更有表現力的語法功能。本書對基本類型做了分析。
Option、Result<T,E>等類型完全由標準庫定義,而不是由編譯器支持的Rust基本類型定義,這一點可以從本書的源代碼分析中發現。
Marker Trait通常由編譯器實現,也是較難理解的語言特征。因此,本書對Marker Trait進行了詳細的闡述。
標準庫除了加、減、乘、除及位運算,還包括下標運算、范圍運算、Try運算等,所有運算符都可以重載,且可以跨越類型重載,運算符重載揭示了Rust的很多編碼奧秘及技巧。
Iterator閉包是函數式編程的基礎構架,Iterator適配器構成了函數式編程的基礎設施,標準庫完整地實現了這些內容,并且幾乎為每個類型都實現了迭代器,盡可能為函數式編程做好準備。本書分析了所有基本類型的Iterator實現。
Cell、RefCell、Pin、Lazy代碼闡釋了在Rust的基礎語法下,如何創造性地解決問題。
Rust標準庫其他智能指針類型的堆內存申請及釋放基本都由Box、RawVec這兩個類型負責。
Rc、Arc是一個杰作,系統級的程序員會僅因為這兩個類型而喜歡上Rust。
Vec、VecDeque、LinkList等智能指針類型都可用于實現經典的數據結構示例。
標準庫對不同操作系統的適配能讓程序員不必像使用C/C++那樣重復耗費精力編寫代碼,節省了編程時間,提高了工作效率。
Future、Poll、Waker與Context揭示了異步編程最基礎的思考和實現。
☆三、作者簡介
深入 Rust 標準庫 作者簡介
任成珺
擁有超過20年的系統級程序架構及開發經驗,至今仍活躍在開發一線。
王曉娜
博士,任職于中國兵器工業集團公司北方科技信息研究所,善于深入淺出地解讀艱深技術。
韓龍
碩士,任職于中信銀行,從事多年IT基礎設施及云服務規劃與設計。
☆四、本書特點
深入 Rust 標準庫 本書特點
◎深度解析Rust標準庫
◎內容翔實、層次分明、邏輯通透
◎代碼中文注釋豐富,可讀性好
◎內容深入,適合提高與進階
☆五、目錄
第1章 Rust標準庫體系概述 1
1.1 CORE庫 2
1.2 ALLOC庫 3
1.3 STD庫 4
1.4 回顧 4
第2章 Rust特征小議 5
2.1 泛型小議 6
2.1.1 基于泛型的函數及Trait 6
2.1.2 泛型約束的層次 6
2.2 Rust內存安全雜述 7
2.3 獲取封裝類型變量的內部變量 9
2.3.1 使用“?”運算符解封裝 9
2.3.2 函數調用+自動解引用 10
2.3.3 采用閉包 10
2.3.4 獲取引用 11
2.3.5 獲取所有權 11
2.4 回顧 12
第3章 內存操作 13
3.1 裸指針——不安全的根源 15
3.1.1 裸指針具體實現 16
3.1.2 固有模塊裸指針關聯函數 18
3.1.3 裸指針操作 19
3.1.4 裸指針番外 22
3.2 MaybeUninit——未初始化變量方案 23
3.2.1 MaybeUninit定義 23
3.2.2 ManuallyDrop定義 24
3.2.3 MaybeUninit構造函數 25
3.2.4 MaybeUninit初始化函數 26
3.2.5 MaybeUninit數組類型操作 27
3.2.6 典型案例 28
3.3 裸指針再論 29
3.4 非空裸指針——NonNull 30
3.4.1 構造關聯函數 31
3.4.2 類型轉換函數 32
3.4.3 其他函數 32
3.5 智能指針的基座——Unique 33
3.6 mem模塊函數 34
3.6.1 構造泛型變量函數 34
3.6.2 泛型變量所有權轉移函數 34
3.6.3 其他函數 36
3.7 動態內存申請及釋放 36
3.7.1 內存布局 36
3.7.2 動態內存申請與釋放接口 38
3.8 全局變量內存探討 42
3.9 drop總結 43
3.10 Rust所有權、生命周期、借用探討 44
3.11 回顧 47
第4章 基本類型及基本Trait 48
4.1 固有函數庫 49
4.1.1 原子操作函數 49
4.1.2 數學函數及位操作函數 49
4.1.3 指令預取優化函數、斷言類函數及棧獲取函數 49
4.2 基本類型分析 49
4.2.1 整數類型 50
4.2.2 浮點類型 53
4.2.3 Option類型 54
4.2.4 引用類型match語法研究 59
4.2.5 Result<T,E>類型 60
4.3 基本Trait 64
4.3.1 編譯器內置Marker Trait 64
4.3.2 算術運算符Trait 67
4.3.3 “?”運算符Trait 74
4.3.4 范圍運算符Trait 76
4.3.5 索引運算符Trait 78
4.4 回顧 83
第5章 迭代器 84
5.1 三種迭代器 85
5.2 Iterator Trait分析 86
5.3 Iterator與其他集合類型轉換 89
5.4 范圍類型迭代器 90
5.5 切片類型迭代器 93
5.6 字符串類型迭代器 98
5.7 數組類型迭代器 99
5.7.1 成員本身迭代器 99
5.7.2 成員引用迭代器 101
5.8 Iterator適配器 102
5.8.1 Map適配器 102
5.8.2 Chain適配器 103
5.8.3 其他適配器 105
5.9 Option適配器 105
5.10 回顧 106
第6章 基本類型(續) 107
6.1 整數類型 108
6.2 布爾類型 109
6.3 字符類型 110
6.4 字符串類型 114
6.5 切片類型 126
6.6 回顧 128
第7章 內部可變性類型 129
7.1 Borrow/BorrowMut分析 130
7.2 Cell類型分析 131
7.2.1 UnsafeCell分析 131
7.2.2 Cell分析 132
7.3 RefCell類型分析 134
7.3.1 Borrow Trait分析 136
7.3.2 BorrowMut Trait分析 138
7.3.3 RefCell的其他函數 140
7.4 Pin/UnPin類型分析 142
7.5 Lazy類型分析 145
7.6 回顧 149
第8章 智能指針 150
8.1 Box類型分析 151
8.2 RawVec類型分析 155
8.3 Vec類型分析 161
8.3.1 Vec基礎分析 161
8.3.2 Vec的Iterator Trait 170
8.4 Rc類型分析 173
8.4.1 Rc類型的構造函數及析構函數 175
8.4.2 Weak類型分析 179
8.4.3 Rc的其他函數 180
8.5 Arc類型分析 183
8.5.1 Arc類型的構造函數及析構函數 183
8.5.2 Weak類型分析 188
8.5.3 Arc的其他函數 190
8.6 Cow<'a, T>類型分析 194
8.6.1 ToOwned Trait分析 194
8.6.2 Cow<'a, T>分析 195
8.7 LinkedList類型分析 197
8.8 String類型分析 203
8.8.1 初識String類型分析 203
8.8.2 格式化字符串分析 205
8.9 回顧 216
第9章 用戶態標準庫基礎 217
9.1 Rust與C語言交互 218
9.1.1 C語言的類型適配 219
9.1.2 C語言的va_list類型適配 221
9.1.3 C語言字符串類型適配 222
9.1.4 OsString代碼分析 228
9.2 代碼工程中的一個技巧 229
9.3 內存管理之STD庫 230
9.4 系統調用(SYSCALL)的封裝 236
9.5 文件描述符及句柄 237
9.5.1 文件描述符所有權設計 237
9.5.2 文件邏輯操作適配層 241
9.6 回顧 244
第10章 進程管理 245
10.1 匿名管道 247
10.2 重定向實現分析 248
10.3 進程管理 251
10.3.1 OS相關適配層 251
10.3.2 對外接口層 259
10.4 回顧 263
第11章 并發編程 264
11.1 Futex分析 265
11.2 Mutex類型分析 267
11.2.1 OS相關適配層 267
11.2.2 OS無關適配層 269
11.2.3 對外接口層 271
11.3 Condvar類型分析 275
11.3.1 OS相關適配層 275
11.3.2 OS無關適配層 277
11.3.3 對外接口層 278
11.4 RwLock類型分析 280
11.4.1 OS相關適配層 280
11.4.2 OS無關適配層 286
11.4.3 對外接口層 287
11.5 Barrier類型分析 290
11.6 Once類型分析 292
11.7 OnceLock類型分析 296
11.8 LazyLock類型分析 299
11.9 線程分析 300
11.9.1 OS相關適配層 300
11.9.2 OS無關適配層 311
11.9.3 對外接口層 313
11.10 線程消息通信——MPSC 332
11.10.1 消息隊列類型——Queue 334
11.10.2 阻塞及喚醒信號機制 336
11.10.3 一次性通信通道機制 338
11.10.4 Shared類型通道 342
11.10.5 對外接口層 350
11.11 Rust的RUNTIME 357
11.12 回顧 359
第12章 文件系統 360
12.1 OS相關適配層 361
12.1.1 路徑名類型分析 361
12.1.2 普通文件操作分析 362
12.1.3 目錄操作分析 371
12.2 對外接口層 377
12.3 回顧 381
第13章 I/O系統 382
13.1 標準輸入Stdin類型分析 383
13.1.1 Read Trait 384
13.1.2 向量讀/寫類型分析 388
13.1.3 對外接口層 390
13.2 標準輸出Stdout類型分析 405
13.3 網絡I/O 420
13.4 回顧 420
第14章 異步編程 421
14.1 Rust協程框架簡析 422
14.1.1 協程概述 422
14.1.2 Rust的I/O多路復用 423
14.2 Rust協程支持類型簡析 428
14.2.1 Rust協程管理 428
14.2.2 Future Trait分析 429
14.3 回顧 434
★總結
本次送書 2 本 評論區抽2位小伙伴送書
活動時間:截止到 2024-05-30 20:00:00
參與方式:關注、點贊、收藏,評論
隨機抽取的2位小伙伴將免費獲得此書!