歡迎閱讀Rust編程語言,這是一本有關Rust的入門書籍。Rust語言將會幫助你更快,更好的編寫
可信賴的軟件。在編程語言的設計中,高級語言的易讀性和低級語言的易控制常常是一個矛盾點。Rust
會試圖解決這個衝突。經過在強大的技術能力和開發友好性之間取得某種平衡,Rust會讓你在編寫控制底層細節(如內存相關)時,避免常見的一些陷阱git
Rust對於不少人來講都有不少理由適合。讓咱們看下一些其中最重要的人羣。程序員
Rust是被設計成一種在大的有各類系統能力級別的開發者團隊中協做的創造性工具。低級語言很容易形成一些微妙的bug,而這些bug在其餘語言中,每每只能經過普遍的測試和讓經驗豐富的開發者進行代碼檢查才能發現。在Rust中,編譯器承擔起‘守門員’這個角色,當代碼中有這些難以捉摸的bug,包括併發的bug時,編譯器會拒絕編譯。經過編譯器的幫助,團隊能夠將更多的時間花在編程邏輯而不是追蹤bug上。github
Rust同時也給系統編程帶來了一些現代的開發者工具:web
經過這些以及其餘Rust生態中的工具,使得開發者可以在開發系統層級的代碼時極大得提升了。編程
Rust適合那些對系統編程感興趣的學生和人們。經過Rust,不少人學到了一些有關係統操做系統編程的知識點。Rust社區十分歡迎並樂於回答學生問題。Rust團隊但願經過多種方式,好比這本書,幫助更多人理解系統編程的概念,尤爲是那些剛學習編程的人們。小程序
成千上百或大或小的公司,在生產環境中使用Rust去實現不一樣的任務。包括命令行工具,web服務,開發工具,音頻視頻的分析與解碼,加密貨幣,生物學,搜索引擎,物聯網應用,機器學習,甚至還有火狐遊覽器的主要組成部分。安全
Rust被用來服務那些使用Rust來構建Rust編程語言,社區,開發工具,第三方庫。咱們歡迎你爲Rust語言作出貢獻。服務器
Rust適合那些重視編程語言的效率和穩定性的人們。所謂的速度,指的是你能夠用Rust建立程序的速度以及你編寫Rust的速度。Rust編譯器的檢測經過額外的特性和重構來確保穩定性。這跟那些語言中沒有這些檢查,讓程序員懼怕修改的脆弱遺留代碼造成了一致鮮明的對比。經過零代價的抽象,高層次特性,Rust編譯低層級速度就跟人工寫的代碼同樣,Rust確保代碼安全的同時也確保代碼足夠快。網絡
Rust但願也能同時支持其餘用戶,上面提到的用戶只是受益最大的羣體。整體來講,Rust最大的目標就是消除程序員幾十年下來,在安全,性能,經濟性之間的權衡。歡迎嘗試Rust看看它的選擇是否適合你。多線程
本書假定你曾使用過其餘的編程語言,可是不假定具體的哪種。咱們儘量的使本書的材料足夠豐富以使任何編程背景的人們均可以理解它們。咱們不會在諸如什麼是編程,如何考慮編程這種問題上花費太多時間。若是你是一個剛接觸編程的人士,你最好閱讀一本詳細介紹了編程的書籍。
大致上,這本書假定你會按順序從頭日後閱讀本書。後面的章節都是之前面的章節中的概念爲基礎構建的,而早期的章節不會太深刻某個主題;咱們每每會在後面的章節中回顧某個主題。
本書中有兩種類型都章節:概念型章節和項目型章節。在概念型章節中,你將會了解到Rust的某個方面,在項目章節中,咱們運用已經學到的知識,一塊兒構建一個小程序。第2,12,20章是項目章節,其餘都是概念型章節。
第一章說明了如何安裝Rust,如何編寫一個Hello world程序以及如何使用Cargo---Rust的包管理器以及構建工具。第二章是一個Rust的動手指南,裏面包含了一些高層級的概念,這些概念會在稍後的章節中提供更詳細的信息。若是你但願能立刻動手幹,那第二章是一個比較好的突破口。剛開始的時候,你可能想跳過第三章,這一章主要涵蓋的是Rust和其餘編程語言的類似特性,同時,你會直接深刻第四章,這是有關Rust的全部權系統的。然而,若是你是一個強迫症患者,習慣在學習下一章以前學習到全部詳細的知識點,你能夠跳過第二章並直接進入第三章,而後在開發項目並使用一個具體知識點時,從新回到第二章。
第五章討論告終構體和方法,第六章涵蓋了枚舉,match
表達式和 if let
流程控制。
以後你可使用結構體和枚舉定義本身的Rust類型。
第七章中,你會了解到關於Rust的模塊系統,以及組織你的代碼和公共的應用程序接口的隱私規則。第八章討論了一些標準庫提供的一些常見的數據集合,好比向量,字符串,哈希表。第九章則會探討Rust的錯誤處理理念和技巧。
第十章會深刻了解範型,特徵和生命週期,這些使得你有能力能構建應用到多種類型的代碼。第十一章都是有關測試的,即便有Rust類型保證,測試依然是必要的去確保你程序的邏輯是正確的。在第十二章,咱們會構建一個用來在文件中搜索文本的工具,它是grep
命令行工具的一個子。爲了獲得這個目標,咱們會使用不少在以前章節討論的內容和概念。
第十三章會探討閉包和迭代--兩個Rust從函數式編程繼承過來的特性。在第十四章,咱們會更加深刻了解Cargo而且討論下將你的代碼庫分享給他人的最佳實踐。第十五章,主要討論標準庫提供的智能指針以及實現其功能的特徵。
第十六章,咱們查看下併發編程時的不一樣模型以及討論下Rust如何幫助你在多線程時如何無風險的編程。第十七章會聚焦於Rust的一些編程習慣與你以前已經熟悉的面向對象編程中一些規則的區別。
第十八章是關於模式好模式匹配的參考,在Rust中,模式是一種強大的表現靈感的方式。第十九是一個包括不少使人感興趣的大雜燴,如非安全Rust,宏以及生命週期,特徵,類型,函數,閉包等。
第二十章,咱們會完成一個實現了低層級多線程的網絡服務器。
最後,附錄中用引用的形式包含了一些有關Rust語言的有用信息。 附錄A包含了Rust的關鍵字,附錄B包含了Rust的操做符和符號,附錄C包含了標準庫提供的特徵推導, 附錄D包含了一些有用的開發者工具,附錄E解釋了Rust版本信息。
能夠採用任何順序閱讀本書,若是你想跳過某些內容,那就直接跳過。只要在你碰到一些疑惑時在回過頭來查看早些章節便可。 你能夠作任何想作的事。
學習Rust最重要的部分之一就是學習如何閱讀編譯器展示的錯誤信息:這些會引導你完成能運行的代碼。所以, 咱們會提供不少不經過編譯的示例代碼,編譯器會展示各個場景下的錯誤信息。記住,當你使用一個某個示例,它極可能是編譯不經過!確保你閱讀了周圍的文本以確認你正在使用的示例是否出錯。 Ferris會幫助你區分那些不能運行的代碼的含義。
絕大多數場景中, 咱們都會引導你將編譯不經過的代碼改正爲經過編譯的代碼。
源碼:
本書中使用的源碼能夠在這裏獲取 Github