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

Rust權(quán)威指南(第2版)

Rust權(quán)威指南(第2版)

定 價:¥168.00

作 者: (美) Steve Klabnik (史蒂夫·克拉伯尼克) ,Carol Nichols (卡羅爾·尼科爾斯)
出版社: 電子工業(yè)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787121494734 出版時間: 2025-02-01 包裝: 平裝-膠訂
開本: 128開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  《Rust權(quán)威指南(第2版)》由Rust核心團(tuán)隊成員編寫,由淺入深地探討了Rust語言的方方面面。從創(chuàng)建函數(shù)、選擇數(shù)據(jù)類型及綁定變量等基礎(chǔ)內(nèi)容著手,逐步介紹所有權(quán)、生命周期、trait、安全保證等高級概念,錯誤處理、模式匹配、包管理、并發(fā)機(jī)制、函數(shù)式特性等實(shí)用工具,以及完整的項目開發(fā)實(shí)戰(zhàn)案例。作為開源的系統(tǒng)級編程語言,Rust可以幫助你編寫更有效率且更加可靠的軟件,在給予開發(fā)者底層控制能力的同時,通過高水準(zhǔn)的工程設(shè)計避免了傳統(tǒng)語言帶來的諸多麻煩?!禦ust權(quán)威指南(第2版)》適合所有希望評估、入門、提高和研究Rust語言的軟件開發(fā)人員閱讀。

作者簡介

  Steve Klabnik曾是Rust的核心開發(fā)者及Rust文檔團(tuán)隊的負(fù)責(zé)人。他時常參與各種演講,并且是一位十分多產(chǎn)的開源貢獻(xiàn)者。 Carol Nichols曾是Rust核心團(tuán)隊中的成員,目前是Rust Crates.io團(tuán)隊成員,也是Integer 32公司(全球首家專注于Rust的軟件咨詢公司)的聯(lián)合創(chuàng)始人,以及Rust Belt Rust(Rust鐵銹地帶)會議的組織者。

圖書目錄

1 入門指南 1
安裝 1
在Linux或macOS環(huán)境中安裝Rust 2
在Windows環(huán)境中安裝Rust 3
常見問題 3
更新與卸載 4
本地文檔 5
Hello, world! 5
創(chuàng)建一個文件夾 5
編寫并運(yùn)行一個Rust程序 6
Rust程序剖析 7
編譯與運(yùn)行是兩個不同的步驟 8
Hello, Cargo! 10
使用Cargo創(chuàng)建一個項目 10
使用Cargo構(gòu)建和運(yùn)行項目 13
以Release模式進(jìn)行構(gòu)建 15
學(xué)會習(xí)慣Cargo 15
總結(jié) 16
2 編寫一個猜數(shù)游戲 17
創(chuàng)建一個新的項目 17
處理一次猜測 19
使用變量存儲值 20
獲得用戶的輸入 21
使用Result類型處理可能失敗的情況 22
通過println!中的占位符輸出對應(yīng)的值 23
測試第一部分 24
生成一個保密數(shù)字 24
借助包獲得更多功能 25
生成一個隨機(jī)數(shù) 28
比較猜測數(shù)字與保密數(shù)字 31
使用循環(huán)實(shí)現(xiàn)多次猜測 35
在猜測成功時優(yōu)雅地退出 37
處理非法輸入 37
總結(jié) 40
3 通用編程概念 41
變量與可變性 42
常量 44
隱藏 45
數(shù)據(jù)類型 47
標(biāo)量類型 48
復(fù)合類型 53
函數(shù) 57
參數(shù) 59
語句和表達(dá)式 60
函數(shù)的返回值 62
注釋 65
控制流 66
if表達(dá)式 66
使用循環(huán)重復(fù)執(zhí)行代碼 70
總結(jié) 77
4 認(rèn)識所有權(quán) 78
什么是所有權(quán) 78
所有權(quán)規(guī)則 81
變量作用域 81
String類型 82
內(nèi)存與分配 83
所有權(quán)與函數(shù) 90
返回值與作用域 91
引用與借用 93
可變引用 95
懸垂引用 99
引用的規(guī)則 101
切片類型 101
字符串切片 103
其他類型的切片 108
總結(jié) 109
5 使用結(jié)構(gòu)體組織相關(guān)聯(lián)的數(shù)據(jù) 110
定義并實(shí)例化結(jié)構(gòu)體 110
使用簡化版的字段初始化方法 113
使用結(jié)構(gòu)體更新語法,基于其他實(shí)例來創(chuàng)建新實(shí)例 113
使用不需要對字段命名的元組結(jié)構(gòu)體來創(chuàng)建不同的類型 115
沒有任何字段的單元結(jié)構(gòu)體 116
一個使用結(jié)構(gòu)體的示例程序 118
使用元組重構(gòu)代碼 119
使用結(jié)構(gòu)體重構(gòu)代碼:增加有意義的描述信息 120
通過派生trait增加實(shí)用功能 121
方法 125
定義方法 125
帶有更多參數(shù)的方法 129
關(guān)聯(lián)函數(shù) 130
多個impl塊 131
總結(jié) 132
6 枚舉與模式匹配 133
定義枚舉 133
枚舉值 134
Option枚舉及其在空值處理方面的優(yōu)勢 139
控制流結(jié)構(gòu)match 143
綁定值的模式 145
匹配Option<T> 146
匹配必須窮舉所有的可能性 148
通配模式及_占位符 149
簡單控制流if let 151
總結(jié) 153
7 使用包、單元包和模塊管理日漸復(fù)雜的項目 154
包與單元包 155
通過定義模塊來控制作用域及私有性 160
用于在模塊樹中指明條目的路徑 162
使用pub關(guān)鍵字來暴露路徑 165
從super關(guān)鍵字開始構(gòu)造相對路徑 169
將結(jié)構(gòu)體或枚舉聲明為公共的 170
使用use關(guān)鍵字將路徑導(dǎo)入作用域 172
創(chuàng)建use路徑時的慣用方式 174
使用as關(guān)鍵字來提供新的名稱 175
使用pub use重導(dǎo)出名稱 176
使用外部包 177
使用嵌套路徑來清理眾多的use語句 178
通配符 179
將模塊拆分為不同的文件 180
總結(jié) 182
8 通用集合類型 184
使用動態(tài)數(shù)組存儲多個值 185
創(chuàng)建動態(tài)數(shù)組 185
更新動態(tài)數(shù)組 186
讀取動態(tài)數(shù)組中的元素 186
遍歷動態(tài)數(shù)組中的值 189
使用枚舉存儲多個類型的值 190
在銷毀動態(tài)數(shù)組時也會銷毀其中的元素 191
使用字符串存儲UTF-8編碼的文本 192
字符串是什么 192
創(chuàng)建一個新的字符串 193
更新字符串 194
索引字符串 197
字符串切片 200
遍歷字符串的方法 201
字符串的確沒那么簡單 202
在哈希映射中存儲鍵值對 202
創(chuàng)建一個新的哈希映射 203
訪問哈希映射中的值 203
哈希映射與所有權(quán) 205
更新哈希映射 205
哈希函數(shù) 208
總結(jié) 208
9 錯誤處理 210
不可恢復(fù)錯誤與panic! 211
可恢復(fù)錯誤與Result 215
匹配不同的錯誤 217
傳播錯誤 221
要不要使用panic! 229
示例、原型代碼和測試 229
當(dāng)你比編譯器擁有更多信息時 230
錯誤處理指導(dǎo)原則 230
創(chuàng)建自定義類型進(jìn)行有效性驗(yàn)證 232
總結(jié) 235
10 泛型、trait與生命周期 236
通過將代碼提取為函數(shù)來減少重復(fù)工作 237
泛型數(shù)據(jù)類型 240
在函數(shù)定義中 240
在結(jié)構(gòu)體定義中 243
在枚舉定義中 245
在方法定義中 246
泛型代碼的性能問題 249
trait:定義共享行為 250
定義trait 250
為類型實(shí)現(xiàn)trait 251
默認(rèn)實(shí)現(xiàn) 254
使用trait作為參數(shù) 256
返回實(shí)現(xiàn)了trait的類型 259
使用trait約束有條件地實(shí)現(xiàn)方法 260
使用生命周期保證引用的有效性 262
使用生命周期來避免懸垂引用 262
借用檢查器 264
函數(shù)中的泛型生命周期 265
生命周期標(biāo)注語法 267
函數(shù)簽名中的生命周期標(biāo)注 267
深入理解生命周期 271
結(jié)構(gòu)體定義中的生命周期標(biāo)注 272
生命周期省略 273
方法定義中的生命周期標(biāo)注 276
靜態(tài)生命周期 277
同時使用泛型參數(shù)、trait約束與生命周期 278
總結(jié) 279
11 編寫自動化測試 280
如何編寫測試 281
測試函數(shù)的構(gòu)成 281
使用assert!宏檢查結(jié)果 286
使用assert_eq!和assert_ne!宏判斷相等性 290
添加自定義的錯誤提示信息 293
使用should_panic檢查panic 295
使用Result<T, E>編寫測試 300
控制測試的運(yùn)行方式 301
并行或串行地運(yùn)行測試 301
顯示函數(shù)輸出 302
運(yùn)行部分特定名稱的測試 304
通過顯式指定來忽略某些測試 307
測試的組織結(jié)構(gòu) 308
單元測試 309
集成測試 311
總結(jié) 316
12 I/O項目:編寫一個命令行程序 317
接收命令行參數(shù) 318
讀取參數(shù)值 319
將參數(shù)值存入變量中 321
讀取文件 322
重構(gòu)代碼以增強(qiáng)模塊化程度和錯誤處理能力 324
二進(jìn)制項目的關(guān)注點(diǎn)分離 325
修正錯誤處理邏輯 330
從main中分離邏輯 334
將代碼分離為獨(dú)立的代碼包 337
使用測試驅(qū)動開發(fā)編寫庫功能 339
編寫一個會失敗的測試 340
編寫可以通過測試的代碼 343
處理環(huán)境變量 347
為不區(qū)分大小寫的search函數(shù)編寫一個會失敗的測試 347
實(shí)現(xiàn)search_case_insensitive函數(shù) 349
將錯誤提示信息打印到標(biāo)準(zhǔn)錯誤流而不是標(biāo)準(zhǔn)輸出流 354
確認(rèn)錯誤被寫到了哪里 354
將錯誤提示信息打印到標(biāo)準(zhǔn)錯誤流 355
總結(jié) 356
13 函數(shù)式語言特性:迭代器與閉包 357
閉包:能夠捕獲環(huán)境的匿名函數(shù) 358
使用閉包捕獲環(huán)境 358
閉包的類型推斷和類型標(biāo)注 361
捕獲引用或移動所有權(quán) 363
將捕獲的值移出閉包及Fn系列trait 366
使用迭代器處理元素序列 371
Iterator trait和next方法 372
消耗迭代器的方法 373
生成其他迭代器的方法 374
使用閉包捕獲環(huán)境 376
改進(jìn)I/O項目 378
使用迭代器代替clone 378
使用迭代器適配器讓代碼更加清晰 382
在循環(huán)與迭代器之間做出選擇 383
比較循環(huán)和迭代器的性能 383
總結(jié) 386
14 進(jìn)一步認(rèn)識Cargo及crates.io 387
使用發(fā)布配置定制構(gòu)建 388
將包發(fā)布到crates.io平臺 389
編寫有用的文檔注釋 390
使用pub use導(dǎo)出合適的公共API 393
創(chuàng)建crates.io賬戶 398
為包添加元數(shù)據(jù) 398
發(fā)布到crates.io 400
發(fā)布已有包的新版本 401
使用cargo yank命令從crates.io上撤回版本 401
Cargo工作空間 402
創(chuàng)建工作空間 402
在工作空間中創(chuàng)建第二個包 404
使用cargo install安裝二進(jìn)制文件 409
使用自定義命令擴(kuò)展Cargo的功能 410
總結(jié) 411
15 智能指針 412
使用Box<T>在堆上分配數(shù)據(jù) 414
使用Box<T>在堆上存儲數(shù)據(jù) 414
使用裝箱定義遞歸類型 415
通過Deref trait將智能指針視作常規(guī)引用 421
跳轉(zhuǎn)到指針指向的值 421
把Box<T>當(dāng)成引用來操作 422
定義我們自己的智能指針 423
實(shí)現(xiàn)Deref trait 424
函數(shù)和方法的隱式解引用轉(zhuǎn)換 426
解引用轉(zhuǎn)換與可變性 427
借助Drop trait在清理時運(yùn)行代碼 428
基于引用計數(shù)的智能指針Rc<T> 433
使用Rc<T>共享數(shù)據(jù) 433
克隆Rc<T>會增加引用計數(shù) 436
RefCell<T>和內(nèi)部可變性模式 438
使用RefCell<T>在運(yùn)行時檢查借用規(guī)則 438
內(nèi)部可變性:可變地借用一個不可變的值 440
結(jié)合使用Rc<T>和RefCell<T>來實(shí)現(xiàn)擁有多重所有權(quán)的可變數(shù)據(jù) 448
循環(huán)引用會造成內(nèi)存泄漏 450
創(chuàng)建循環(huán)引用 450
使用Weak<T>代替Rc<T>來避免循環(huán)引用 454
總結(jié) 460
16 無畏并發(fā) 461
使用線程同時運(yùn)行代碼 462
使用spawn創(chuàng)建新線程 463
使用join句柄等待所有線程結(jié)束 465
在線程中使用move閉包 467
使用消息傳遞在線程間轉(zhuǎn)移數(shù)據(jù) 471
通道和所有權(quán)轉(zhuǎn)移 474
發(fā)送多個值并觀察接收者的等待過程 476
通過克隆發(fā)送者創(chuàng)建多個生產(chǎn)者 477
共享狀態(tài)的并發(fā) 479
互斥體一次只允許一個線程訪問數(shù)據(jù) 479
RefCell<T>/Rc<T>和Mutex<T>/Arc<T>之間的相似性 486
使用Send trait和Sync trait對并發(fā)進(jìn)行擴(kuò)展 487
允許線程間轉(zhuǎn)移所有權(quán)的Send trait 487
允許多個線程同時訪問的Sync trait 488
手動實(shí)現(xiàn)Send和Sync是不安全的 488
總結(jié) 489
17 Rust的面向?qū)ο缶幊烫匦?490
面向?qū)ο笳Z言的特性 490
對象包含數(shù)據(jù)和行為 491
封裝實(shí)現(xiàn)細(xì)節(jié) 491
作為類型系統(tǒng)和代碼共享機(jī)制的繼承 493
使用trait對象存儲不同類型的值 495
為共有行為定義一個trait 496
實(shí)現(xiàn)trait 498
trait對象會執(zhí)行動態(tài)

本目錄推薦

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