由Steve Klabnik和Carol Nichols撰寫,由Rust社區提供
2018版的Rust語言包括許多改進,使Rust更符合人體工程學且更易於學習。本書的此迭代包含許多更改以反映這些改進:
請注意,即使在更新所用的Rust編譯器版本時 ,所編譯的Rust程式語言的早期迭代中的所有代碼也將繼續編譯,而無需edition=&34;在項目的Cargo.toml中。這就是Rust的向後兼容性保證!
HTML格式可從https://doc.rust-lang.org/stable/book/在線獲得, 而脫機使用rustup;可以使用安裝的Rust離線獲得。跑開rustup docs --book。
注意:這本書的版本與No Starch Press發行的印刷版和電子書格式的Rust程式語言相同。
歡迎使用Rust程式語言,這是一本有關Rust的入門書籍。Rust程式語言可幫助您編寫更快,更可靠的軟體。高級人機工程學和低級控制在程式語言設計中常常是矛盾的。銹病挑戰衝突。通過平衡強大的技術能力和出色的開發人員經驗,Rust為您提供了控制底層細節(例如內存使用)的選項,而無需傳統上與此類控制相關的所有麻煩。
由於多種原因,Rust是許多人的理想選擇。讓我們看一些最重要的小組。
事實證明,Rust是用於在具有不同級別的系統編程知識的大型開發人員團隊之間進行協作的高效工具。低級代碼容易產生各種細微的錯誤,在大多數其他語言中,只有經過經驗豐富的開發人員進行廣泛的測試和仔細的代碼審查,才能發現這些錯誤。在Rust中,編譯器通過拒絕使用這些難以捉摸的錯誤(包括並發錯誤)來編譯代碼,從而起到了看門人的作用。通過與編譯器並肩工作,團隊可以將時間花在專注於程序的邏輯上,而不是尋找錯誤。
Rust還為系統編程界帶來了當代的開發人員工具:
通過在Rust生態系統中使用這些工具和其他工具,開發人員可以在編寫系統級代碼時提高工作效率。
Rust適用於學生以及對學習系統概念感興趣的人。使用Rust,許多人已經了解了諸如作業系統開發之類的主題。社區非常歡迎並樂於回答學生的問題。通過本書這樣的努力,Rust團隊希望使更多人(尤其是編程新手)更容易使用系統概念。
數百家大小公司都在生產中使用Rust來完成各種任務。這些任務包括命令行工具,Web服務,DevOps工具,嵌入式設備,音頻和視頻分析和轉碼,加密貨幣,生物信息學,搜尋引擎,物聯網應用程式,機器學習,甚至是Firefox Web瀏覽器的主要部分。
Rust適用於想要構建Rust程式語言,社區,開發人員工具和庫的人。我們希望您能為Rust語言做出貢獻。
Rust適用於渴望使用某種語言的速度和穩定性的人。速度是指您可以使用Rust創建的程序的速度,以及Rust允許您編寫程序的速度。Rust編譯器的檢查通過添加功能和重構來確保穩定性。這與沒有這些檢查的語言中易碎的舊代碼相反,開發人員通常不敢對其進行修改。通過努力實現零成本抽象,將高級功能編譯為低級代碼的速度與手動編寫的代碼一樣快,Rust努力使安全代碼也成為快速代碼。
Rust語言希望也能支持許多其他用戶。這裡提到的只是最大的利益相關者。總體而言,Rust的最大野心是通過提供安全性和生產率,速度和人體工程學來消除程式設計師數十年來接受的折衷方案。嘗試一下Rust,看看它的選擇是否對您有用。
本書假定您已經用另一種程式語言編寫了代碼,但是沒有對哪種程式語言做任何假設。我們已嘗試使各種編程背景的人員都可以廣泛使用該材料。我們不會花很多時間來談論什麼編程是或如何去想它。如果您是編程的新手,那麼最好閱讀一本專門介紹編程的書,為您提供更好的服務。
通常,這本書假定您從前到後依次閱讀。後面的章節以前面的章節中的概念為基礎,而前面的章節可能不會深入研究某個主題。我們通常會在下一章中重新討論該主題。
在本書中,您會發現兩種章節:概念章節和項目章節。在概念章節中,您將學習Rust的一個方面。在項目章節中,我們將一起構建小型程序,並應用您到目前為止所學的知識。第2、12和20章是項目的章節;其餘的是概念章節。
第1章介紹了如何安裝Rust,以及如何編寫「 Hello,world!」。程序,以及如何使用Rust的軟體包管理器和構建工具Cargo。第2章是Rust語言的動手入門。在這裡,我們從較高的層次介紹概念,後面的章節將提供更多詳細信息。如果您想立即弄髒手,第二章就是解決這個問題的地方。起初,您甚至可能想跳過第3章,它涵蓋了Rust的功能,與其他程式語言類似,而直接進入第4章以了解Rust的所有權系統。但是,如果您是一位特別細緻的學習者,並且喜歡在繼續學習下一個細節之前先學習每一個細節,那麼您可能想跳過第2章,直接進入第3章,而當您想學習一個細節時又回到第2章。項目,應用您學到的細節。
第5章討論結構和方法,第6章討論枚舉,match 表達式和if let控制流結構。您將使用結構和枚舉在Rust中創建自定義類型。
在第7章中,您將了解Rust的模塊系統以及用於組織代碼及其公共應用程式編程接口(API)的隱私規則。第8章討論了標準庫提供的一些常見的集合數據結構,例如向量,字符串和哈希圖。第9章探討了Rust的錯誤處理哲學和技術。
第10章深入探討了泛型,特徵和生存期,使您可以定義適用於多種類型的代碼。第11章涉及測試,即使具有Rust的安全保證,也必須進行測試以確保程序邏輯正確。在第12章中,我們將grep從命令行工具構建自己的功能子集的實現,該命令行工具在文件中搜索文本。為此,我們將使用前面各章中討論的許多概念。
第13章探討了閉包和迭代器:Rust的功能,它們來自函數式程式語言。在第14章中,我們將更深入地研究Cargo,並討論與他人共享您的庫的最佳實踐。第15章討論了標準庫提供的智能指針以及支持其功能的特徵。
在第16章中,我們將介紹並發編程的不同模型,並討論Rust如何幫助您輕鬆地在多個線程中進行編程。第17章介紹了Rust習慣用法與您可能熟悉的面向對象編程原理的比較。
第18章是關於模式和模式匹配的參考,它們是在整個Rust程序中表達思想的有力方法。第19章包含了一系列有趣的高級主題,包括不安全的Rust,宏以及有關生存期,特徵,類型,函數和閉包的更多信息。
在第20章中,我們將完成一個項目,在該項目中我們將實現一個低級多線程Web伺服器!
最後,一些附錄以更像參考的格式包含有關該語言的有用信息。附錄A涵蓋了Rust的關鍵字,附錄B涵蓋了Rust的運算符和符號,附錄C涵蓋了標準庫提供的可派生特徵,附錄D涵蓋了一些有用的開發工具,附錄E解釋了Rust版本。
讀這本書沒有錯誤的方法:如果您想跳過,那就去吧!如果遇到任何困惑,您可能必須跳回到前面的章節。但是,盡一切可能為您工作。
學習Rust的過程的重要部分是學習如何讀取編譯器顯示的錯誤消息:這些將指導您使用有效的代碼。這樣,我們將提供許多未編譯的示例,以及編譯器將在每種情況下向您顯示的錯誤消息。要知道,如果您輸入並運行一個隨機示例,則該示例可能無法編譯!確保閱讀了周圍的文字,以查看您嘗試運行的示例是否有誤。Ferris還將幫助您區分不起作用的代碼: