Rust編程很簡單

王鵬

相關主題

商品描述

這是一本專為初學者量身打造的Rust編程指南,無論你是編程新手還是希望快速提升Rust編程技巧的開發者,本書都是你的不二之選。本書共有24章,包括基礎知識,內存、變量和所有權,更覆雜的類型,泛型、Option和Result,集合與錯誤處理,疊代器和閉包,生命周期和內部可變性,多線程,Box和Rust文檔,測試,默認值、構建者模式和Deref,常量、不安全的Rust、外部crates,異步Rust,標準庫、宏等。從基礎概念到高級特性,全面覆蓋,無須覆雜設置。本書都將以清晰易懂的方式,引領你步入Rust編程的殿堂,開啟高效、安全編程的新篇章。

本書適合想要系統學習Rust編程語言的初學者閱讀,也適合經驗豐富的程序員細細品味。

作者簡介

大衛•麥克勞德在成為全職 Rust 開發人員之前,曾是一名教育家、韓英翻譯、項目控制員和撰稿人。

目錄大綱

前言

第1章 一些基礎知識/

1.1註釋/

1.2原始類型:整數、字符和

字符串/

1.3類型推斷/

1.4浮點數/

1.5Hello World和打印/

1.6聲明變量和代碼塊/

1.7顯示和調試/

1.8最小值和最大值/

1.9可變性/

1.10變量遮蔽(Shadowing)/

1.11總結/

第2章 內存、變量和所有權/

2.1棧、堆和指針/

2.2字符串/

2.3常量和靜態變量/

2.4引用的更多內容/

2.5可變引用/

2.5.1Rust的引用規則/

2.5.2情景一:只有一個可變引用/

2.5.3情景二:僅有不可變引用/

2.5.4情景三: 問題情況/

2.6再聊聊變量遮蔽/

2.7將引用傳遞給函數/

2.8覆制(Copy)類型/

2.9變量沒有值/

2.10關於打印的更多內容/

2.11總結/

第3章 更覆雜的類型/

3.1集合類型/

3.1.1數組/

3.1.2Vec(向量)/

3.1.3元組/

3.2控制流/

3.2.1基本控制流/

3.2.2匹配語句/

3.2.3循環/

3.3總結/

第4章 構建你自己的類型/

4.1結構體和枚舉概述/

4.1.1結構體/

4.1.2枚舉/

4.1.3將枚舉類型轉換為整數/

4.1.4枚舉使用多種類型/

4.1.5實現結構體和枚舉/

4.2解構/

4.3引用和點運算符/

4.4總結/

第5章 泛型、Option和Result/

5.1泛型/

5.2Option和Result/

5.2.1Option/

5.2.2Result/

5.2.3其他一些模式匹配的方法/

5.3總結/

第6章 更多的集合,更多的錯誤處理/

6.1其他集合/

6.1.1HashMap和BTreeMap/

6.1.2HashSet和BTreeSet/

6.1.3二叉堆/

6.1.4VecDeque/

6.2問號運算符/

6.3當 panic 和 unwrap 是合適的/

6.4總結/

第7章 特性:使不同類型執行相同的操作/

7.1特性:基礎知識/

7.1.1你所需要的只是方法簽名/

7.1.2更覆雜的例子/

7.1.3特性約束/

7.1.4Traits類似於資格認證/

7.2From特性/

7.3孤兒規則/

7.4繞過孤兒規則的方法之一是使用

新類型/

7.5在函數中接受 String 和&str/

7.6總結/

第8章 疊代器和閉包/

8.1方法鏈/

8.2疊代器/

8.3閉包和疊代器中的閉包/

8.4總結/

第9章 再談疊代器和閉包!/

9.1閉包和疊代器的有用方法/

9.1.1映射和過濾/

9.1.2更多的疊代器和相關方法/

9.1.3在疊代器中檢查和查找項目/

9.1.4循環、壓縮、折疊等/

9.2調試宏dbg! 和 .inspect/

9.3總結/

第10章 生命周期和內部可變性/

10.1&str的類型/

10.2生命周期註解/

10.2.1函數中的生命周期/

10.2.2類型中的生命周期註解/

10.2.3匿名生命周期/

10.3內部可變性/

10.3.1Cell/

10.3.2RefCell/

10.3.3Mutex/

10.3.4RwLock/

10.4總結/

第11章 多線程及更多內容/

11.1在函數內部導入和重命名/

11.2todo! 宏/

11.3類型別名/

11.4Cow/

11.5Rc/

11.5.1Rc的存在原因/

11.5.2實踐中使用 Rc/

11.5.3使用 Rc 避免生命周期註解/

11.6多線程/

11.6.1創建線程/

11.6.2使用JoinHandle等待線程

完成/

11.6.3閉包的類型/

11.6.4使用 move 關鍵字/

11.7總結/

第12章 關於閉包、泛型和線程的更多內容/

12.1閉包作為參數/

12.1.1一些簡單的閉包/

12.1.2FnOnce、FnMut和 Fn 之間的

關系/

12.1.3閉包都是獨一無二的/

12.1.4閉包示例/

12.2impl Trait/

12.2.1常規泛型與impl Trait 的比較/

12.2.2使用impl Trait 返回閉包/

12.3Arc/

12.4作用域線程/

12.5通道(Channel)/

12.5.1通道基礎/

12.5.2實現一個通道/

12.6總結/

第13章 Box和Rust文檔/

13.1閱讀 Rust 文檔/

13.1.1assert_eq!/

13.1.2搜索/

13.1.3[src]按鈕/

13.1.4特性信息/

13.1.5屬性/

13.2Box/

13.2.1Box的基礎知識/

13.2.2將 traits 放入 Box/

13.2.3使用 Box 處理多種錯誤類型/

13.2.4將 trait 對象向下轉型為具體

類型/

13.3總結/

第14章 測試/

14.1包和模塊/

14.1.1模塊基礎/

14.1.2關於 pub 關鍵字的更多信息/

14.1.3模塊內的模塊/

14.2測試/

14.2.1只需添加 #[test],它就變成了

一個test/

14.2.2當測試失敗時發生了什麼/

14.2.3編寫多個測試/

14.3測試驅動開發(TDD)/

14.3.1構建一個計算器:從編寫測試

開始/

14.3.2真正將計算器拼湊起來/

14.4總結/

第15章 默認值、構建者模式和Deref/

15.1實現 Default/

15.2構建者模式/

15.2.1編寫構建者方法/

15.2.2在構建者模式中添加最終

檢查/

15.2.3使構建者模式更嚴格/

15.3Deref和DerefMut/

15.3.1Deref基礎知識/

15.3.2實現Deref/

15.3.3實現DerefMut/

15.3.4錯誤使用Deref/

15.4總結/

第16章 常量、不安全的Rust、外部 crates/

16.1常量泛型/

16.2常量函數/

16.3可變的靜態變量/

16.4不安全的 Rust/

16.4.1概述/

16.4.2在不安全的 Rust 中使用靜態可變

變量/

16.4.3Rust中最著名的不安全

方法/

16.4.4以_unchecked 結尾的

方法/

16.5引入外部 crate/

16.5.1Crates和 Cargo.toml/

16.5.2使用 rand crate/

16.5.3使用 rand 函數擲骰子/

16.6總結/

第17章 Rust最流行的crate/

17.1serde/

17.2標準庫中的時間/

17.3chrono/

17.3.1檢查外部庫中的代碼/

17.3.2再次回到 chrono/

17.4rayon/

17.5anyhow和thiserror/

17.5.1anyhow/

17.5.2thiserror/

17.6通用特性實現/

17.7lazy_static和 once_cell/

17.7.1lazy_static:延遲評估的靜態

變量/

17.7.2OnceCell:只能寫入一次的

單元/

17.8總結/

第18章 在你的計算機上使用Rust/

18.1Cargo/

18.1.1為什麼每個人都使用 Cargo/

18.1.2使用 Cargo 和 Rust 編譯時的

操作/

18.2處理用戶輸入/

18.2.1通過 stdin 的用戶輸入/

18.2.2訪問命令行參數/

18.2.3訪問環境變量/

18.3使用文件/

18.3.1創建文件/

18.3.2打開現有文件/

18.3.3使用OpenOptions處理文件/

18.4Cargo doc/

18.5總結/

第19章 更多crate和異步Rust/

19.1reqwest crate/

19.2特性標誌/

19.3異步 Rust/

19.3.1異步基礎/

19.3.2檢查 Future 是否準備好/

19.3.3使用異步運行時/

19.3.4關於異步 Rust 的其他一些

細節/

19.4總結/

第20章 標準庫之旅/

20.1數組/

20.1.1數組現在實現了疊代器/

20.1.2解構和映射數組/

20.1.3使用 from_fn 創建數組/

20.2字符(char)/

20.3整數/

20.3.1檢查操作/

20.3.2Add特性和其他類似特性/

20.4浮點數/

20.5關聯項和關聯常量/

20.5.1關聯函數/

20.5.2關聯類型/

20.5.3關聯常量/

20.6bool/

20.7Vec/

20.8String/

20.9OsString和 CString/

20.10總結/

第21章 繼續遊覽標準庫/

21.1std∷mem/

21.2設置panic鉤子/

21.3查看回溯(backtrace)/

21.4標準庫的前言(prelude)/

21.5其他宏/

21.5.1unreachable!/

21.5.2column!, line!, file!, 

module_path!/

21.5.3thread_local!/

21.5.4cfg!/

21.6總結/

第22章 編寫自己的宏/

22.1宏存在的原因/

22.2編寫基本宏/

22.3從標準庫中讀取宏/

22.4使用宏保持代碼整潔/

22.5總結/

第23章 項目實戰——半成品項,需要等你完成/

23.1為最後兩章設置項目/

23.2打字教程/

23.2.1設置和第一段代碼/

23.2.2開發代碼/

23.2.3進一步開發和清理/

23.2.4現在輪到你了/

23.3維基百科文章摘要搜索器/

23.3.1設置和第一段代碼/

23.3.2開發代碼/

23.3.3進一步開發和清理/

23.3.4現在輪到你了/

23.4終端秒表和時鐘/

23.4.1設置和第一段代碼/

23.4.2開發代碼/

23.4.3進一步開發和清理/

23.4.4現在輪到你了/

23.5總結/

第24章 項目實戰,繼續挑戰未完成的項目/

24.1網頁服務器猜詞遊戲/

24.1.1設置和第一段代碼/

24.1.2開發代碼/

24.1.3進一步開發和清理/

24.1.4現在輪到你了/

24.2激光筆/

24.2.1設置和第一段代碼/

24.2.2開發代碼/

24.2.3進一步開發和清理/

24.2.4現在輪到你了/

24.3目錄和文件導航器/

24.3.1設置和第一段代碼/

24.3.2開發代碼/

24.3.3進一步開發和清理/

24.3.4現在輪到你了/

24.4總結/