深入淺出 Rust 深入浅出Rust

範長春

  • 出版商: 機械工業
  • 出版日期: 2018-08-29
  • 定價: $534
  • 售價: 8.5$454
  • 語言: 簡體中文
  • 頁數: 389
  • 裝訂: 平裝
  • ISBN: 7111606426
  • ISBN-13: 9787111606420
  • 相關分類: Rust 語言
  • 已絕版

買這商品的人也買了...

商品描述

本書詳細描述了Rust語言的基本語法,穿插講解一部分高級使用技巧,並以更容易理解的方式解釋其背後的設計思想。

全書總共分五個部分。第一部分介紹Rust基本語法,因為對任何程序設計語言來說,語法都是基礎,學習這部分是理解其他部分的前提。

第二部分介紹屬於Rust獨一無二的內存管理方式。它設計了一組全新的機制,既保證了安全性,又保持了強大的內存佈局控制力,而且沒有額外性能損失。這部分是本書的重點和核心所在,也是Rust語言的思想內核精髓之處。

第三部分介紹Rust的抽象表達能力。它支持多種編程範式,以及較為強大的抽象表達能力。第四部分介紹併發模型。在目前這個階段,對並行編程的支持是新一代編程語言不可繞過的重要話題。

Rust也吸收了業界最新的發展成果,對併發有良好支持。第五部分介紹一些實用設施。Rust語言有許多創新,但它絕不是高高在上孤芳自賞的類型,設計者在設計過程中充分考慮了語言的工程實用性。眾多在其他語言中被證明過的優秀實踐被吸收了進來,有利於提升實際工作效率。通過此書,讀者能夠深入透徹地理解Rust的高階特性,比如代數類型系統、生命周期、借用檢查、內部可變性、線程安全、泛型、閉包、迭代器、生成器等。可作為參考書供學生、軟件工程師、研究人員以及其他對Rust語言感興趣的讀者參考。本書所揭示的Rust編程語言的設計思想對於理解其他系統編程語言,如C++,也非常有幫助。

作者簡介

范長春,中國科學院自動化研究所博士,Rust開源項目貢獻者,前微軟員工。目前就職于synopsys公司參與源代碼靜態檢查工具coverity軟體的開發工作。

喜歡研究編譯器以及源代碼靜態檢查。

在網上撰寫了大量關於Rust語言的技術文章,得到了不錯的反響。

目錄大綱

前言
第一部分基礎知識
第1章與君初相見2 
1.1版本和發布策略2 
1.2安裝開發環境4 
1.3 Hello World 7 
1.4 Prelude 8 
1.5 Format格式詳細說明8 

第2章變量和類型10 
2.1變量聲明10 
2.1.1變量遮蔽12 
2.1.2類型推導13 
2.1.3類型別名14 
2.1.4靜態變量15 
2.1.5常量16 
2.2基本數據類型16 
2.2.1 bool 16 
2.2.2 char 17 
2.2.3整數類型17 
2.2.4整數溢出19 
2.2.5浮點類型21 
2.2.6指針類型23 
2.2.7類型轉換23 
2.3複合數據類型24 
2.3.1 tuple 25 
2.3.2 struct 25 
2.3.3 tuple struct 27 
2.3. 4 enum 29 
2.3.5類型遞歸定義32 

第3章語句和表達式34 
3.1語句34
3.2表達式34 
3.2.1運算表達式35 
3.2.2賦值表達式37 
3.2.3語句塊表達式38 
3.3 if-else 39 
3.3.1 loop 40 
3.3.2 while 41 
3.3.3 for循環42 

第4章函數44 
4.1簡介44 
4.2發散函數46 
4.3 main函數47 
4.4 const fn 48 
4.5函數遞歸調用49 

第5章trait 50 
5.1成員方法50 
5.2靜態方法53 
5.3擴展方法55 
5.4完整函數調用語法56 
5.5 trait約束和繼承58 
5.6 Derive 59 
5.7 trait別名60 
5.8標準庫中常見的trait簡介61 
5.8.1 Display和Debug 61 
5.8.2 PartialOrd / Ord / 
PartialEq / Eq 62 
5.8.3 Sized 63 
5.8.4 Default 64 
5.9總結65 

第6章數組和字符串66
6.1數組66 
6.1.1內置方法67 
6.1.2多維數組67 
6.1.3數組切片67 
6.1.4 DST和胖指針68 
6.1.5 Range 70 
6.1.6邊界檢查72 
6.2字符串74 
6.2.1 &str 74 
6.2 .2 String 75 

第7章模式解構77 
7.1簡介77 
7.2 match 78 
7.2.1 exhaustive 79 
7.2.2下劃線80 
7.2.3 match也是表達式82 
7.2.4 Guards 83 
7.2.5變量綁定84 
7.2.6 ref和mut 85 
7.3 if-let和while-let 88 
7.4函數和閉包參數做模式解構89 
7.5總結90 

第8章深入類型系統91 
8.1代數類型系統91 
8.2 Never Type 94 
8.3再談Option類型97 

第9章宏102 
9.1簡介macro 102 
9.1.1實現編譯階段檢查102 
9.1.2實現編譯期計算103
9.1.3實現自動代碼生成103 
9.1.4實現語法擴展103 
9.2示範型宏103 
9.3宏1.1 105 

第二部分內存安全
第10章內存管理基礎110 
10.1堆和棧110 
10.2段錯誤111 
10.3內存安全112 

第11章所有權和移動語義114 
11.1什麼是所有權114 
11.2移動語義116 
11.3複製語義118 
11.4 Box類型120 
11.5 Clone VS. Copy 121 
11.5.1 Copy的含義121 
11.5.2 Copy的實現條件121 
11.5.3 Clone的含義122 
11.5.4自動derive 123 
11.5.5總結123 
11.6析構函數124 
11.6.1資源管理125 
11.6.2主動析構126 
11.6.3 Drop VS. Copy 129 
11.6.4析構標記129 

第12章借用和生命週期132 
12.1生命週期132 
12.2借用132 
12.3借用規則134
12.4生命週期標記136 
12.4.1函數的生命週期標記136 
12.4.2類型的生命週期標記138 
12.5省略生命週期標記139 

第13章借用檢查141 
13.1編譯錯誤示例142 
13.2內存不安全示例:修改枚舉143 
13.3內存不安全示例:迭代器
失效144 
13.4內存不安全示例:懸空指針146 
13.5小結148 

第14章NLL(Non-Lexical- 
Lifetime) 150 
14.1 NLL希望解決的問題150 
14.2 NLL的原理154 
14.3小結157 

第15章內部可變性158 
15.1 Cell 158 
15.2 RefCell 161 
15.3 UnsafeCell 164 

第16章解引用169 
16.1自定義解引用169 
16.2自動解引用171 
16.3自動解引用的用處171 
16.4有時候需要手動處理173 
16.5智能指針175 
16.5.1引用計數175 
16.5.2 Cow 178 
16.6小結180

第17章洩漏181 
17.1內存洩漏181 
17.2內存洩漏屬於內存安全184 
17.3析構函數洩漏185 

第18章Panic 190 
18.1什麼是panic 190 
18.2 Panic實現機制191 
18.3 Panic Safety 192 
18.4小結197 

第19章Unsafe 198 
19.1 unsafe關鍵字198 
19.2裸指針199 
19.3內置函數201 
19.3.1 transmute 201 
19.3.2內存讀寫202 
19.3.3綜合示例204 
19.4分割借用206 
19.5協變209 
19.5.1什麼是協變209 
19.5.2 PhantomData 211 
19.6未定義行為214 
19.7小結215 

第20章Vec源碼分析216 
20.1內存申請217 
20.2內存擴容220 
20.3內存釋放222 
20.3.1 Vec的析構函數222 
20.3.2 Drop Check 223 
20.4不安全的邊界226
20.5自定義解引用227 
20.6迭代器228 
20.7 panic safety 231 

第三部分高級抽象
第21章泛型234 
21.1數據結構中的泛型