注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Rust程序設(shè)計(jì)

Rust程序設(shè)計(jì)

Rust程序設(shè)計(jì)

定 價(jià):¥139.00

作 者: [美] 吉姆·布蘭迪(Jim Blandy) 著,李松峰 譯
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787115546494 出版時(shí)間: 2020-09-01 包裝: 平裝
開本: 16開 頁數(shù): 476 字?jǐn)?shù):  

內(nèi)容簡介

  本書由兩位經(jīng)驗(yàn)豐富的系統(tǒng)程序員撰寫,介紹了一種具有C和C++性能,同時(shí)安全且支持并發(fā)的新型系統(tǒng)編程語言Rust,解釋了Rust如何在性能和安全性之間架起橋梁,以及我們?nèi)绾斡煤眠@門語言。書中主要內(nèi)容包括:Rust的基本數(shù)據(jù)類型,關(guān)于所有權(quán)、引用等概念,表達(dá)式、錯誤處理、包和模塊、結(jié)構(gòu)體、枚舉與模式等基礎(chǔ)知識,Rust語言的特型與泛型,閉包,迭代器,集合,等等。

作者簡介

  吉姆·布蘭迪(Jim Blandy)Mozilla軟件工程師,擁有近40年編程經(jīng)驗(yàn)和30年自由軟件開發(fā)經(jīng)驗(yàn),是Subversion版本控制系統(tǒng)最初的設(shè)計(jì)者之一。賈森·奧倫多夫(Jason Orendorff)資深軟件工程師,擁有20余年軟件開發(fā)經(jīng)驗(yàn),目前在為Mozilla Firefox Web瀏覽器開發(fā)JavaScript引擎?!咀g者介紹】360前端開發(fā)資深專家、前端TC委員、W3C AC代表,任職于“奇舞團(tuán)”,也是360 Web字體服務(wù)“奇字庫”作者。

圖書目錄

前言 xv
第 1 章 為什么是Rust 1
第 2 章 Rust初體驗(yàn) 5
2.1 下載和安裝Rust 5
2.2 一個(gè)簡單的函數(shù) 7
2.3 編寫和運(yùn)行單元測試 9
2.4 處理命令行參數(shù) 9
2.5 一個(gè)簡單的Web服務(wù)器 13
2.6 并發(fā) 19
2.6.1 到底什么是曼德布洛特集合 19
2.6.2 解析成對的命令行參數(shù) 23
2.6.3 像素到復(fù)數(shù)的映射 25
2.6.4 繪制集合 26
2.6.5 寫出圖像文件 27
2.6.6 并發(fā)的曼德布洛特程序 29
2.6.7 運(yùn)行曼德布洛特繪圖器 32
2.6.8 安全無形 34
第 3 章 基本類型 35
3.1 機(jī)器類型 38
3.1.1 整數(shù)類型 38
3.1.2 浮點(diǎn)類型 40
3.1.3 布爾類型 42
3.1.4 字符類型 43
3.2 元組 44
3.3 指針類型 45
3.3.1 引用 46
3.3.2 Box 46
3.3.3 原始指針 46
3.4 數(shù)組、向量和切片 47
3.4.1 數(shù)組 47
3.4.2 向量 48
3.4.3 逐個(gè)元素地構(gòu)建向量 51
3.4.4 切片 51
3.5 字符串類型 52
3.5.1 字符串字面量 52
3.5.2 字節(jié)字符串 53
3.5.3 字符串在內(nèi)存中的表示 53
3.5.4 字符串 55
3.5.5 使用字符串 56
3.5.6 其他類似字符串的類型 56
3.6 更多類型 57
第 4 章 所有權(quán) 58
4.1 所有權(quán) 59
4.2 轉(zhuǎn)移 63
4.2.1 更多轉(zhuǎn)移操作 68
4.2.2 轉(zhuǎn)移與控制流 69
4.2.3 轉(zhuǎn)移與索引內(nèi)容 69
4.3 Copy類型:轉(zhuǎn)移的例外 71
4.4 Rc和Arc:共享所有權(quán) 74
第 5 章 引用 76
5.1 引用作為值 79
5.1.1 Rust引用與C++引用 79
5.1.2 給引用賦值 80
5.1.3 引用的引用 81
5.1.4 比較引用 81
5.1.5 引用永遠(yuǎn)不為空 82
5.1.6 借用對任意表達(dá)式的引用 82
5.1.7 對切片和特型對象的引用 83
5.2 引用安全 83
5.2.1 借用局部變量 83
5.2.2 接收引用作為參數(shù) 86
5.2.3 將引用作為參數(shù)傳遞 87
5.2.4 返回引用 88
5.2.5 結(jié)構(gòu)體包含引用 89
5.2.6 不同的生命期參數(shù) 91
5.2.7 省略生命期參數(shù) 92
5.3 共享與修改 93
5.4 征服對象之?!?9
第 6 章 表達(dá)式 101
6.1 表達(dá)式語言 101
6.2 塊與分號 102
6.3 聲明 103
6.4 if與match 105
6.5 循環(huán) 107
6.6 return表達(dá)式 109
6.7 為什么Rust有循環(huán) 110
6.8 函數(shù)與方法調(diào)用 111
6.9 字段與元素 112
6.10 引用操作符 113
6.11 算術(shù)、位、比較和邏輯操作符 113
6.12 賦值 114
6.13 類型轉(zhuǎn)換 114
6.14 閉包 115
6.15 優(yōu)先級與關(guān)聯(lián)性 116
6.16 展望 118
第 7 章 錯誤處理 119
7.1 詫異 119
7.1.1 展開?!?20
7.1.2 中止進(jìn)程 121
7.2 結(jié)果 121
7.2.1 捕獲錯誤 121
7.2.2 結(jié)果類型別名 123
7.2.3 打印錯誤 123
7.2.4 傳播錯誤 124
7.2.5 處理多種錯誤類型 125
7.2.6 處理“不會發(fā)生”的錯誤 127
7.2.7 忽略錯誤 128
7.2.8 在main()中處理錯誤 128
7.2.9 聲明自定義錯誤類型 129
7.2.10 為什么是結(jié)果 130
第 8 章 包和模塊 131
8.1 包 131
8.2 模塊 134
8.2.1 把模塊寫在單獨(dú)的文件中 135
8.2.2 路徑和導(dǎo)入 136
8.2.3 標(biāo)準(zhǔn)前置模塊 138
8.2.4 特性項(xiàng),Rust的基礎(chǔ) 139
8.3 將程序作為庫發(fā)布 141
8.4 src/bin目錄 142
8.5 屬性 143
8.6 測試和文檔 145
8.6.1 集成測試 147
8.6.2 文檔 148
8.6.3 文檔測試 149
8.7 指定依賴 152
8.7.1 版本 152
8.7.2 Cargo.lock 153
8.8 把包發(fā)布到crates.io 154
8.9 工作空間 156
8.10 還有驚喜 156
第 9 章 結(jié)構(gòu)體 158
9.1 命名字段結(jié)構(gòu)體 158
9.2 類元組結(jié)構(gòu)體 161
9.3 類基元結(jié)構(gòu)體 161
9.4 結(jié)構(gòu)體布局 162
9.5 通過impl定義方法 162
9.6 泛型結(jié)構(gòu)體 165
9.7 帶生命期參數(shù)的結(jié)構(gòu)體 167
9.8 為結(jié)構(gòu)體類型派生共有特型 168
9.9 內(nèi)部修改能力 168
第 10 章 枚舉與模式 172
10.1 枚舉 173
10.1.1 包含數(shù)據(jù)的枚舉 175
10.1.2 枚舉的內(nèi)存布局 176
10.1.3 使用枚舉的富數(shù)據(jù)結(jié)構(gòu) 176
10.1.4 泛型枚舉 178
10.2 模式 180
10.2.1 模式中的字面量、變量和通配符 183
10.2.2 元組與結(jié)構(gòu)體模式 184
10.2.3 引用模式 185
10.2.4 匹配多種可能性 187
10.2.5 模式護(hù)具 188
10.2.6 @模式 188
10.2.7 在哪里使用模式 189
10.2.8 填充二叉樹 190
10.3 設(shè)計(jì)的考量 191
第 11 章 特型與泛型 192
11.1 使用特型 193
11.1.1 特型目標(biāo) 194
11.1.2 特型目標(biāo)布局 195
11.1.3 泛型函數(shù) 196
11.1.4 使用哪一個(gè) 199
11.2 定義和實(shí)現(xiàn)特型 200
11.2.1 默認(rèn)方法 201
11.2.2 特型與其他人的類型 202
11.2.3 特型中的Self 204
11.2.4 子特型 205
11.2.5 靜態(tài)方法 205
11.3 完全限定方法調(diào)用 207
11.4 定義類型關(guān)系的特型 208
11.4.1 關(guān)聯(lián)類型(或迭代器工作原理) 208
11.4.2 泛型特型(或操作符重載的原理) 211
11.4.3 伴型特型(或rand::random()工作原理) 212
11.5 逆向工程綁定 213
11.6 小結(jié) 216
第 12 章 操作符重載 217
12.1 算術(shù)與位操作符 218
12.1.1 一元操作符 220
12.1.2 二元操作符 221
12.1.3 復(fù)合賦值操作符 221
12.2 相等測試 222
12.3 順序比較 225
12.4 Index與IndexMut 227
12.5 其他操作符 229
第 13 章 實(shí)用特型 230
13.1 Drop 231
13.2 Sized 233
13.3 Clone 235
13.4 Copy 236
13.5 Deref與DerefMut 237
13.6 Default 239
13.7 AsRef與AsMut 241
13.8 Borrow與BorrowMut 242
13.9 From與Into 244
13.10 ToOwned 245
13.11 Borrow與ToOwned實(shí)例:謙遜的奶牛(Cow) 246
第 14 章 閉包 248
14.1 捕獲變量 249
14.1.1 借用值的閉包 250
14.1.2 盜用值的閉包 250
14.2 函數(shù)與閉包類型 252
14.3 閉包的性能 254
14.4 閉包和安全 255
14.4.1 殺值的閉包 255
14.4.2 FnOnce 256
14.4.3 FnMut 257
14.5 回調(diào) 259
14.6 有效使用閉包 261
第 15 章 迭代器 263
15.1 Iterator和IntoIterator特型 264
15.2 創(chuàng)建迭代器 265
15.2.1 iter和iter_mut方法 265
15.2.2 IntoIterator實(shí)現(xiàn) 266
15.2.3 drain方法 268
15.2.4 其他迭代器源 268
15.3 迭代器適配器 269
15.3.1 map和filter 269
15.3.2 filter_map和flat_map 271
15.3.3 scan 273
15.3.4 take和take_while 274
15.3.5 skip和skip_while 274
15.3.6 peekable 275
15.3.7 fuse 276
15.3.8 可逆迭代器與rev 277
15.3.9 inspect 278
15.3.10 chain 278
15.3.11 enumerate 279
15.3.12 zip 279
15.3.13 by_ref 280
15.3.14 cloned 281
15.3.15 cycle 281
15.4 消費(fèi)迭代器 282
15.4.1 簡單累計(jì):count、sum和product 282
15.4.2 max和min 283
15.4.3 max_by和min_by 283
15.4.4 max_by_key和min_by_key 283
15.4.5 比較項(xiàng)序列 284
15.4.6 any和all 285
15.4.7 position、rposition和ExactSizeIterator 285
15.4.8 fold 285
15.4.9 nth 286
15.4.10 last 286
15.4.11 find 287
15.4.12 構(gòu)建集合:collect和FromIterator 287
15.4.13 Extend特型 289
15.4.14 partition 289
15.5 實(shí)現(xiàn)自己的迭代器 290
第 16 章 集合 294
16.1 概述 295
16.2 Vec 296
16.2.1 訪問元素 296
16.2.2 迭代 298
16.2.3 增長和收縮向量 298
16.2.4 連接 300
16.2.5 拆分 301
16.2.6 交換 303
16.2.7 排序和搜索 303
16.2.8 比較切片 304
16.2.9 隨機(jī)元素 305
16.2.10 Rust排除無效錯誤 305
16.3 VecDeque 306
16.4 LinkedList 307
16.5 BinaryHeap 308
16.6 HashMap和BTreeMap 309
16.6.1 條目 311
16.6.2 映射迭代 313
16.7 HashSet和BTreeSet 313
16.7.1 集迭代 314
16.7.2 相等的值不相同 314
16.7.3 整集操作 315
16.8 散列 316
16.9 標(biāo)準(zhǔn)集合之外 318
第 17 章 字符串與文本 319
17.1 Unicode背景知識 319
17.1.1 ASCII、Latin-1和Unicode 320
17.1.2 UTF-8 320
17.1.3 文本方向性 322
17.2 字符(char) 322
17.2.1 字符分類 322
17.2.2 處理數(shù)字 322
17.2.3 字符大小寫轉(zhuǎn)換 323
17.2.4 與整數(shù)相互轉(zhuǎn)換 324
17.3 String與str 324
17.3.1 創(chuàng)建字符串值 325
17.3.2 簡單檢查 325
17.3.3 追加和插入文本 326
17.3.4 刪除文本 327
17.3.5 搜索與迭代的約定 327
17.3.6 搜索文本的模式 328
17.3.7 搜索與替換 328
17.3.8 迭代文本 329
17.3.9 修剪 331
17.3.10 字符串大小寫轉(zhuǎn)換 331
17.3.11 從字符串解析出其他類型 331
17.3.12 將其他類型轉(zhuǎn)換為字符串 332
17.3.13 作為其他類文本類型借用 333
17.3.14 訪問UTF-8格式的文本 333
17.3.15 從UTF-8數(shù)據(jù)產(chǎn)生文本 334
17.3.16 阻止分配 335
17.3.17 字符串作為泛型集合 336
17.4 格式化值 337
17.4.1 格式化文本值 338
17.4.2 格式化數(shù)值 339
17.4.3 格式化其他類型 341
17.4.4 為調(diào)試格式化值 341
17.4.5 為調(diào)試格式化指針 342
17.4.6 通過索引或名字引用參數(shù) 342
17.4.7 動態(tài)寬度與精度 343
17.4.8 格式化自定義類型 344
17.4.9 在你的代碼中使用格式化語言 345
17.5 正則表達(dá)式 346
17.5.1 基本用法 347
17.5.2 懶構(gòu)建Regex值 348
17.6 規(guī)范化 349
17.6.1 規(guī)范化形式 350
17.6.2 unicode-normalization包 351
第 18 章 輸入和輸出 352
18.1 讀取器和寫入器 353
18.1.1 讀取器 354
18.1.2 緩沖讀取器 355
18.1.3 讀取文本行 356
18.1.4 收集行 358
18.1.5 寫入器 359
18.1.6 文件 360
18.1.7 搜尋 360
18.1.8 其他讀取器和寫入器類型 361
18.1.9 二進(jìn)制數(shù)據(jù)、壓縮與序列化 362
18.2 文件與目錄 364
18.2.1 OsStr和Path 364
18.2.2 Path和PathBuf的方法 365
18.2.3 文件系統(tǒng)訪問函數(shù) 367
18.2.4 讀取目錄 368
18.2.5 平臺特定的特性 369
18.3 網(wǎng)絡(luò)編程 370
第 19 章 并發(fā) 373
19.1 并行分叉–合并 374
19.1.1 產(chǎn)生及合并 376
19.1.2 跨線程錯誤處理 377
19.1.3 跨線程共享不可修改數(shù)據(jù) 378
19.1.4 Rayon 380
19.1.5 重溫曼德布洛特集合 382
19.2 通道 383
19.2.1 發(fā)送值 385
19.2.2 接收值 387
19.2.3 運(yùn)行管道 388
19.2.4 通道特性與性能 390
19.2.5 線程安全:Send與Sync 391
19.2.6 將所有迭代器都接到通道上 393
19.2.7 超越管道 394
19.3 共享可修改狀態(tài) 395
19.3.1 什么是互斥量 395
19.3.2 Mutex 397
19.3.3 mut與Mutex 398
19.3.4 互斥量的問題 399
19.3.5 死鎖 399
19.3.6 中毒的互斥量 400
19.3.7 使用互斥量的多消費(fèi)者通道 400
19.3.8 讀/寫鎖(RwLock) 401
19.3.9 條件變量(Condvar)402
19.3.10 原子類型 403
19.3.11 全局變量 404
19.4 習(xí)慣編寫Rust并發(fā)代碼 406
第 20 章 宏 407
20.1 宏基礎(chǔ) 408
20.1.1 宏擴(kuò)展基礎(chǔ) 409
20.1.2 意外結(jié)果 410
20.1.3 重復(fù) 411
20.2 內(nèi)置宏 413
20.3 調(diào)試宏 414
20.4 json!宏 415
20.4.1 片段類型 416
20.4.2 在宏里使用遞歸 419
20.4.3 在宏里使用特型 419
20.4.4 作用域與自凈宏 421
20.4.5 導(dǎo)入和導(dǎo)出宏 424
20.5 匹配時(shí)避免語法錯誤 425
20.6 超越macro_rules! 426
第 21 章 不安全代碼 427
21.1 不安全源自哪里 428
21.2 不安全的塊 429
21.3 不安全的函數(shù) 431
21.4 不安全的塊還是不安全的函數(shù) 433
21.5 未定義行為 434
21.6 不安全的特型 435
21.7 原始指針 437
21.7.1 安全解引用原始指針 439
21.7.2 示例:RefWithFlag 440
21.7.3 可空指針 442
21.7.4 類型大小與對齊 442
21.7.5 指針?biāo)阈g(shù) 443
21.7.6 移入和移出內(nèi)存 444
21.7.7 示例:GapBuffer 447
21.7.8 不安全代碼中的詫異安全性 453
21.8 外來函數(shù):在Rust中調(diào)用C和C++ 453
21.8.1 查找共有數(shù)據(jù)表示 454
21.8.2 聲明外來函數(shù)和變量 456
21.8.3 使用庫函數(shù) 458
21.8.4 libgit2的原始接口 461
21.8.5 libgit2的安全接口 466
21.9 小結(jié) 475
作者介紹 476
封面介紹 476

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號