TOP
0
0
【簡體曬書區】 單本79折,5本7折,活動好評延長至5/31,趕緊把握這一波!
精通Rust(第2版)(簡體書)
滿額折

精通Rust(第2版)(簡體書)

人民幣定價:139 元
定  價:NT$ 834 元
優惠價:87726
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:21 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

Rust是一門系統編程語言,是支持函數式、命令式以及泛型等編程範式的多範式語言。Rust在語法上和C++類似。Rust快速、可靠、安全,它提供了甚至超過C/C++的性能和安全保證,同時它也是一種學習曲線比較平滑的熱門編程語言。


本書內容共17章,由淺入深地講解Rust相關的知識,涉及基礎語法、軟件包管理器、測試工具、類型系統、內存管理、異常處理、高級類型、並發模型、宏、外部函數接口、網絡編程、HTTP、數據庫、WebAssembly、GTK+框架和GDB調試等重要知識點。


本書適合想學習Rust編程的讀者閱讀,希望讀者能夠對C、C++或者Python有一些了解。書中豐富的代碼示例和詳細的講解能夠幫助讀者快速上手,高效率掌握Rust編程。


作者簡介

拉胡爾.沙瑪(Rahul Sharma)對編程教學一直充滿熱情,過去兩年他一直在從事軟件開發相關的工作。他在開發Servo時開始接觸Rust,Servo是由Mozilla Research公司開發的瀏覽器引擎,是他的GSoC項目的一部分。目前他供職於AtherEnergy公司,正在為智能滑板車構建彈性的云基礎架構。他感興趣的領域包括系統編程、分布式系統、編譯器及類型理論等。他也是Rust社區的特約撰稿人,並在Mozilla的Servo項目中指導實習生。


韋薩.凱拉維塔(Vesa Kaihlavirta)從5歲起就開始接觸編程,並且是從C64 BASIC開始入門的。他的職業目標是提高軟件應用領域的開發者對編程語言和軟件質量的認識。他是一名資深的Linux開發人員,並且已經在電信和金融行業工作了10年。Vesa目前住在芬蘭中部的Jyvaskyla。


名人/編輯推薦

掌握一門優質的編程語言,不僅能夠提升編程質量和效率,還能提升技術從業者的專業素養。


Rust作為新時代編程語言中一顆新星,得到了越來越多開發者的追捧。


Rust為成為段位更高的開發者,的一塊重要的敲門磚。


Rust作為一門多範式語言,支持函數式、命令式以及泛型等編程範式。Rust在語法上和C++類似,兼具快速、可靠、安全等優良特性,它提供了甚至超過C/C++的性能和安全保證,同時它也是一種學習曲線比較平滑的熱門編程語言。


本書就是為想學習Rust編程的讀者準備的,只要讀者具備一定的編程基礎,就可以通過本書全面地了解Rust特性和編程語言,並通過豐富的代碼示例,夯實Rust的實用技能。


目次

第1章 Rust入門 1

1.1 Rust是什麼,以及為何需要關注它 1

1.2 安裝Rust工具鏈 7

1.3 Rust簡介 9

1.3.1 基元類型 12

1.3.2 變量聲明和不可變性 13

1.3.3 函數 14

1.3.4 閉包 16

1.3.5 字符串 17

1.3.6 條件和判斷 17

1.3.7 match表達式 19

1.3.8 循環 20

1.3.9 自定義數據類型 22

1.3.10 類型上的函數和方法 27

1.3.11 module、import和use語句 31

1.3.12 集合 31

1.3.13 迭代器 35

1.4 改進字符計數器 36

1.5 小結 38

第2章使用Cargo管理項目 39

2.1 軟件包管理器 40

2.2 模塊 40

2.2.1 嵌套模塊 40

2.2.2 將文件用作模塊 43

2.2.3 將目錄用作模塊 44

2.3 Cargo和程序庫 46

2.3.1 新建一個Cargo項目 47

2.3.2 Cargo與依賴項 48

2.3.3 使用Cargo執行測試 50

2.3.4 使用Cargo運行示例 52

2.3.5 Cargo工作區 53

2.4 Cargo工具擴展 54

2.4.1 子命令和Cargo安裝 54

2.4.2 使用clippy格式化代碼 56

2.4.3 Cargo.toml清單文件簡介 57

2.5 搭建Rust開發環境 60

2.6 使用Cargo構建imgtool程序 63

2.7 小結 66

第3章 測試、文檔化和基準評估 67

3.1 測試的目的 67

3.2 組織測試 68

3.3 單元測試 71

3.3.1 第一個單元測試 71

3.3.2 運行測試 71

3.3.3 隔離測試代碼 72

3.3.4 故障測試 73

3.3.5 忽略測試 73

3.4 集成測試 74

3.4.1 第一個集成測試 74

3.4.2 共享通用代碼 76

3.5 文檔 77

3.5.1 編寫文檔 78

3.5.2 生成和查看文檔 78

3.5.3 托管文檔 79

3.5.4 文檔屬性 79

3.5.5 文檔化測試 80

3.6 基準 81

3.6.1 內置的微觀基準工具 81

3.6.2 穩定版Rust上的基準測試 83

3.7 編寫和測試軟件包——邏輯門模擬器 86

3.8 CI集成測試與TravisCI 90

3.9 小結 93

第4章 類型、泛型和特征 94

4.1 類型系統及其重要性 94

4.2 泛型 95

4.2.1 創建泛型# 97

4.2.2 泛型實現 99

4.2.3 泛型應用 100

4.3 用特征抽象行為 102

4.3.1 特征 102

4.3.2 特征的多種形式 108

4.4 使用包含泛型的特征——特征區間 110

4.4.1 類型上的特征區間 113

4.4.2 泛型函數和impl代碼塊上的特征區間 114

4.4.3 使用“+”將特征組合為區間 115

4.4.4 特征區間與impl特征語法 116

4.5 標準庫特征簡介 118

4.6 使用特征物件實現真正的多態性 125

4.6.1 分發 125

4.6.2 特征物件 126

4.7 小結 128

第5章 內存管理和安全性 129

5.1 程序和內存 130

5.2 程序如何使用內存 131

5.3 內存管理及其分類 132

5.4 內存分配簡介 133

5.4.1 堆棧 133

5.4.2 堆 135

5.5 內存管理的缺陷 136

5.6 內存安全性 137

5.7 內存安全三原則 139

5.7.1 所有權 139

5.7.2 通過特征復制類型 144

5.7.3 借用 151

5.7.4 基於借用規則的方法類型 156

5.7.5 生命周期 156

5.8 Rust中的指針類型 164

5.8.1 引用——安全的指針 164

5.8.2 原始指針 165

5.8.3 智能指針 165

5.8.4 引用計數的智能指針 170

5.8.5 內部可變性的應用 179

5.9 小結 180

第6章 異常處理 181

6.1 異常處理簡介 181

6.2 可恢復的異常 183

6.2.1 Option 183

6.2.2 Result 187

6.3 Option/Result的組合 191

6.3.1 常見的組合器 191

6.3.2 組合器應用 192

6.3.3 Option和Result類型之間的轉換 194

6.4 及早返回和運算符“?” 194

6.5 不可恢復的異常 196

6.6 自定義錯誤和Error特征 199

6.7 小結 204

第7章 高級概念 205

7.1 類型系統簡介 205

7.1.1 代碼塊和表達式 206

7.1.2 let語句 209

7.1.3 循環作為表達式 214

7.1.4 數字類型中的類型清晰度和符號區分 215

7.1.5 類型推斷 217

7.1.6 類型別名 218

7.2 字符串 219

7.2.1 包含所有權的字符串——String 220

7.2.2 借用字符串——&str 222

7.2.3 字符串切片和分塊 223

7.2.4 在函數中使用字符串 225

7.2.5 字符串拼接 225

7.2.6 &str和String的應用場景 226

7.3 全局值 227

7.3.1 常量 227

7.3.2 靜態值 227

7.3.3 編譯期函數——constfn 228

7.3.4 通過lazy_static!宏將靜態值動態化 229

7.4 迭代器 230

7.5 高級類型 235

7.5.1 不定長類型 235

7.5.2 函數類型 236

7.5.3 never類型“!”和函數分發 236

7.5.4 聯合 236

7.5.5 Cow 238

7.6 高級特征 238

7.6.1 Sized和Sized 238

7.6.2 Borrow和AsRef 238

7.6.3 ToOwned 238

7.6.4 From和Into 239

7.6.5 特征物件和物件安全性 239

7.6.6 通用函數調用語法 240

7.6.7 特征規則 241

7.7 閉包進階 241

7.7.1 Fn閉包 241

7.7.2 FnMut閉包 242

7.7.3 FnOnce閉包 242

7.8 結構體、枚舉和特征中的常量 243

7.9 模塊、路徑和導入 245

7.9.1 導入 245

7.9.2 再次導出 245

7.9.3 隱私性 246

7.10 高級匹配模式和守護 246

7.10.1 匹配守護 246

7.10.2 高級let構造 247

7.11 強制類型轉換 247

7.12 類型與內存 248

7.12.1 內存對齊 248

7.12.2 std::mem模塊 249

7.13 使用serde進行序列化和反序列化 251

7.14 小結 252

第8章 並發 253

8.1 程序執行模型 253

8.2 並發 254

8.2.1 並發方法 255

8.2.2 缺陷 257

8.3 Rust中的並發 259

8.3.1 線程基礎 259

8.3.2 自定義線程 261

8.3.3 訪問線程中的數據 262

8.4 線程的並發模型 264

8.4.1 狀態共享模型 264

8.4.2 互斥 267

8.4.3 通過Arc和Mutex實現共享可變性 268

8.4.4 通過消息傳遞進行通信 270

8.5 Rust中的線程安全 272

8.5.1 什麼是線程安全 273

8.5.2 線程安全的特征 273

8.5.3 Send 274

8.5.4 Sync 274

8.6 使用actor模型實現並發 274

8.7 其他程序庫 277

8.8 小結 278

第9章 宏與元編程 279

9.1 什麼是元編程? 279

9.2 Rust宏的應用場景 282

9.3 Rust中的宏及其類型 282

9.4 使用macro_rules!創建宏 286

9.5 標準庫中的內置宏 289

9.6 macro_rules!宏的標記類型 290

9.7 宏中的重復 293

9.8 宏的高級應用——為HashMap的初始化編寫DSL 295

9.9 宏用例——編寫測試 296

9.10 練習 298

9.11 過程宏 299

9.12 派生宏 300

9.13 調試宏程序 306

9.14 常用的過程宏軟件包 306

9.15 小結 307

第10章不安全的Rust和外部函數接口 308

10.1 安全與不安全 308

10.1.1 不安全的函數和代碼塊 311

10.1.2 不安全的特征和實現 314

10.2 在Rust中調用C代碼 316

10.3 通過C語言調用Rust代碼 319

10.4 在Rust使用外部C/C++程序庫 322

10.5 使用PyO3構造原生Python擴展 325

10.6 在Rust中為Node.js創建原生擴展 328

10.7 小結 332

第11章日志 333

11.1 日志記錄及其重要性 333

11.2 日志記錄框架的需求 335

11.3 日志記錄框架及其特性 335

11.4 日志記錄方法 337

11.4.1 非結構化日志記錄 337

11.4.2 結構化日志記錄 338

11.5 Rust中的日志記錄 338

11.5.1 log——為Rust日志記錄提供外觀 339

11.5.2 env_logger 340

11.5.3 log4rs 342

11.5.4 使用slog進行結構化日志記錄 344

11.6 小結 350

第12章Rust與網絡編程 351

12.1 網絡編程簡介 351

12.2 同步網絡I/O 354

12.3 異步網絡I/O 361


12.3.1 Rust中的異步抽象 362


12.3.2 構建異步的Redis服務器 364


12.4 小結 368

第13章用Rust構建Web應用程序 369

13.1 Rust中的Web應用 369

13.2 用hyper進行HTTP通信 370

13.2.1 hyper服務器端API——構建一個短網址服務 371

13.2.2 作為客戶端的hyper——構建一個URL短網址客戶端 374

13.2.3 Web框架 376

13.3 actix-web基礎知識 377

13.4 使用actix-web構建一個書簽API 377

13.5 小結 387

第14章Rust與數據庫 388


14.1 數據持久性的重要性 388

14.2 SQLite 390

14.3 PostgreSQL 395

14.4 r2d2連接池 399

14.5 Postgres和dieselORM 401

14.6 小結 408

第15章Rust與WebAssembly 409


15.1 什麼是WebAssmbly 409

15.2 WebAssembly的設計目標 412

15.3 WebAssembly入門 412

15.3.1 在線嘗試 413

15.3.2 生成WebAssembly的方法 413

15.4 Rust和WebAssembly 414

15.4.1 Wasm-bindgen 414

15.4.2 其他WebAssembly項目 421

15.5 小結 422

第16章Rust與桌面應用 423


16.1 GUI開發簡介 423

16.2 GTK+框架 424

16.3 通過gtk-rs構建一個新聞類桌面應用程序 425

16.4 練習 437

16.5 其他新興的UI框架 437

16.6 小結 438


第 17章 調試 439

17.1 調試簡介 439

17.1.1 調試器基礎 440

17.1.2 調試的先決條件 441

17.1.3 配置GDB 442

17.1.4 一個示例程序——buggie 442

17.1.5 GDB基礎知識 443

17.1.6 在Visual Studio Code中集成GDB 448

17.2 rr調試器簡介 452

17.3 小結 454

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 726
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區