![]() ![]() |
Rust權(quán)威指南 ![]() 《Rust權(quán)威指南(第2版)》由Rust核心團隊成員編寫,由淺入深地探討了Rust語言的方方面面。從創(chuàng)建函數(shù)、選擇數(shù)據(jù)類型及綁定變量等基礎(chǔ)內(nèi)容著手,逐步介紹所有權(quán)、生命周期、trait、安全保證等高級概念,錯誤處理、模式匹配、包管理、并發(fā)機制、函數(shù)式特性等實用工具,以及完整的項目開發(fā)實戰(zhàn)案例。 作為開源的系統(tǒng)級編程語言,Rust可以幫助你編寫更有效率且更加可靠的軟件,在給予開發(fā)者底層控制能力的同時,通過高水準的工程設(shè)計避免了傳統(tǒng)語言帶來的諸多麻煩。 《Rust權(quán)威指南(第2版)》適合所有希望評估、入門、提高和研究Rust語言的軟件開發(fā)人員閱讀。 本書由Rust核心開發(fā)團隊編寫而成,是Rust語言學(xué)習(xí)的權(quán)威資料。 本書由中國Rust社區(qū)成員翻譯。 從Rust語言的基礎(chǔ)概念,到其獨有的實用工具,本書由淺入深地介紹了Rust語言的方方面面,適合所有希望評估、入門、提高和研究Rust 語言的軟件開發(fā)人員閱讀。 書中附帶3個完整的項目開發(fā)實戰(zhàn)案例,手把手教你從0到1發(fā)開Rust實踐項目,快速上手Rust。 涵蓋Rust 2021新版本內(nèi)容。 歡迎閱讀《Rust 權(quán)威指南》第2版,本書深入淺出地介紹了 Rust 語言! Rust 是一門可以幫助你開發(fā)出高效率、高可靠性軟件的編程語言。以往的編程語言往往無法同時兼顧高水準的工程體驗與底層的控制能力,而 Rust 則被設(shè)計出來挑戰(zhàn)這一目標,它力圖同時提供強大的工程能力和良好的開發(fā)體驗,在給予開發(fā)者控制底層細節(jié)能力(比如內(nèi)存操作)的同時,避免傳統(tǒng)語言帶來的諸多麻煩。 誰是Rust的目標用戶 基于各種各樣的原因,Rust 對于許多人來講都是一門相當理想的語言,F(xiàn)在,讓我們看一看其中最重要的一些群體。 開發(fā)團隊 Rust 已經(jīng)被證明可以高效地應(yīng)用于大規(guī)模的、擁有不同系統(tǒng)編程背景的開發(fā)團隊。底層代碼總是容易出現(xiàn)各種各樣隱晦的錯誤,對于大部分編程語言來說,想要發(fā)現(xiàn)這些錯誤,要么通過海量的測試用例,要么通過優(yōu)秀程序員細致的代碼評審。而在 Rust 的世界里,大部分錯誤(甚至包括并發(fā)環(huán)境中產(chǎn)生的錯誤)都可以在編譯階段被編譯器發(fā)現(xiàn)并攔截。得益于編譯器這種類似于守門員的角色,開發(fā)團隊可以在更多的時間內(nèi)專注于業(yè)務(wù)邏輯而非錯誤調(diào)試。 當然,Rust 也附帶了一系列面向系統(tǒng)編程的現(xiàn)代化開發(fā)工具: ? ?Cargo 提供了一套內(nèi)置的依賴管理與構(gòu)建工具。通過 Cargo,你可以在 Rust 生態(tài)系統(tǒng)中一致且輕松地增加、編譯和管理依賴。 ? ?rustfmt 用于約定一套統(tǒng)一的編碼風(fēng)格。 ? ?Rust Language Server 為集成開發(fā)環(huán)境(IDE)提供了可供集成的代碼補全和錯誤提示工具。 通過使用上述工具,開發(fā)者可以高效地進行系統(tǒng)級編程。 學(xué)生 對于那些有興趣接觸系統(tǒng)編程的學(xué)生而言,Rust 也是一個非常好的選擇,已經(jīng)有不少人基于 Rust 來學(xué)習(xí)諸如操作系統(tǒng)開發(fā)之類的課程。另外,我們擁有一個非常熱情的社區(qū),社區(qū)成員們總是樂于回答來自初學(xué)者的各種問題。Rust 開發(fā)團隊希望通過本書讓更多的人,特別是學(xué)生,能更加輕松地接觸、學(xué)習(xí)系統(tǒng)編程的各種概念。 企業(yè) 目前已經(jīng)有數(shù)百家或大或小的企業(yè),在生產(chǎn)環(huán)境中使用 Rust來處理各式各樣的任務(wù)。這些任務(wù)包括命令行工具開發(fā)、Web 服務(wù)開發(fā)、DevOps 工具開發(fā)、嵌入式設(shè)備開發(fā)、音視頻分析與轉(zhuǎn)碼、數(shù)字貨幣交易、生物信息提取、搜索引擎開發(fā)、物聯(lián)網(wǎng)應(yīng)用開發(fā)、機器學(xué)習(xí)算法研究,以及 Firefox 網(wǎng)絡(luò)瀏覽器中的大部分功能開發(fā)。 開源開發(fā)者 我們歡迎所有愿意參與構(gòu)建 Rust 編程語言本身,或者周邊社區(qū)、開發(fā)工具及第三方庫的開發(fā)者。你們的貢獻對于構(gòu)建一個良好的 Rust 語言生態(tài)環(huán)境非常重要! 重視速度與穩(wěn)定性的開發(fā)者 Rust 適用于那些重視速度與穩(wěn)定性的開發(fā)者。當談?wù)摰剿俣葧r,不僅是指 Rust 程序可以擁有良好的運行時效率,而且Rust 可以提供良好的開發(fā)時效率。得益于 Rust 編譯器的靜態(tài)檢查能力,我們可以穩(wěn)定地在開發(fā)過程中增添功能或重構(gòu)代碼。與此形成鮮明對比的是,在缺少這些檢查能力的語言中,開發(fā)者往往恐懼于修改那些脆弱的遺留代碼。此外,得益于對零開銷抽象這一概念的追求,開發(fā)者可以在無損耗的前提下使用高級語言特性。Rust 力圖使安全的代碼同樣高效。 當然,這里提到的只是 Rust 使用場景中最有代表性的一部分用戶,Rust 語言也希望能夠服務(wù)于盡可能多的其他開發(fā)者群體?偟膩碚f,Rust 最大的目標在于通過同時保證安全與效率、運行速度與編程體驗,消除數(shù)十年來程序員們不得不接受的那些取舍。不妨給 Rust 一個機會,讓我們一起來看一看它是否適合你。 誰是本書的目標讀者 對于本書的讀者,我們假設(shè)你已經(jīng)使用過某種其他編程語言。雖然我們努力使本書的內(nèi)容能夠被具有不同編程背景的讀者所接受,但不會花太多時間去討論一些基本的編程概念。如果你對于編程是完全陌生的,那么你最好先閱讀一些入門類的編程圖書。 如何閱讀本書 通常而言,我們假定讀者按順序從頭到尾閱讀本書。一開始我們會簡單地介紹一些概念,接著在隨后的章節(jié)中逐步深入,并有針對性地對其中的細節(jié)進行討論。后面章節(jié)的討論建立在前面章節(jié)引入的概念之上。 在本書中,你會發(fā)現(xiàn)兩種類型的章節(jié):概念討論類章節(jié)和項目實踐類章節(jié)。在概念討論類章節(jié)中,你會接觸到 Rust 的某些特性;在項目實踐類章節(jié)中,我們會利用之前講解過的 Rust 特性來共同構(gòu)建一些小程序。第 2 章、第 12 章、第 20 章屬于項目實踐類章節(jié),其余章節(jié)屬于概念討論類章節(jié)。 第 1 章會介紹如何安裝 Rust,如何編寫Hello, world!程序,以及如何使用 Cargo構(gòu)建和管理項目。 第 2 章會從實踐的角度對 Rust 語言進行介紹,這里我們會從較高的層次來覆蓋一系列概念,并在之后的章節(jié)中逐步深入研究細節(jié)。如果你是一個實踐派,想要立即動手編寫代碼,那么第 2 章正好適合你。第 3 章會介紹 Rust 中類似于其他語言的那些特性,第 4 章則介紹 Rust 中獨特的所有權(quán)系統(tǒng)。如果你是一個特別重視細節(jié)的學(xué)習(xí)者,期望一步一步了解清楚每一個角落,那么建議你跳過第 2 章,從第 3 章開始按順序閱讀,并在想要通過實踐來鞏固知識點時再返回第 2 章進行閱讀。 第 5 章會討論結(jié)構(gòu)體和方法,第 6 章會包含枚舉、match表達式及if let控制流結(jié)構(gòu)的相關(guān)內(nèi)容。你將學(xué)會在 Rust 中使用結(jié)構(gòu)體和枚舉來創(chuàng)建自定義類型。 在第 7 章中,你會了解到 Rust 中的模塊系統(tǒng)和私有性規(guī)則,并學(xué)會如何使用它們來組織代碼和設(shè)計公共應(yīng)用程序接口(API)。第 8 章會介紹一些標準庫中提供的常用數(shù)據(jù)結(jié)構(gòu),比如Vec(動態(tài)數(shù)組)、String(字符串)和HashMap(哈希表)。第 9 章會討論 Rust 中關(guān)于錯誤處理的一些設(shè)計理念和工具。 第 10 章會深入講解關(guān)于泛型、trait(特征)和生命周期的概念,它們賦予了你復(fù)用代碼的能力。第 11 章介紹的是關(guān)于如何在 Rust 中構(gòu)建測試系統(tǒng)的內(nèi)容。即便有 Rust 的安全檢查,我們也需要通過測試來保障業(yè)務(wù)邏輯的正確性。在第 12 章中,我們會實現(xiàn)命令行工具grep的一些功能子集,用于在文件中搜索某些特定文本,為此會用到很多前面章節(jié)中討論的概念。 第 13 章會討論 Rust 中與函數(shù)式編程相關(guān)的概念,即閉包與迭代器。在第 14 章中,我們會更加深入地了解 Cargo,以及與他人共享代碼庫的一些最佳實踐。第 15 章會討論標準庫中的智能指針,以及它們所實現(xiàn)的相關(guān) trait。 在第 16 章中,我們會介紹多個不同的并發(fā)編程模型,并討論Rust 是如何讓多線程編程變得不那么恐怖的。第 17 章則著眼于比較 Rust 與常見的面向?qū)ο缶幊谭妒降牟煌L(fēng)格。 第 18 章是關(guān)于模式和模式匹配的介紹,它們給 Rust 語言帶來了異常強大的表達能力。第 19 章會覆蓋一些有趣的高級主題,包括對不安全 Rust、宏、生命周期、trait、類型、函數(shù)和閉包的更深入的討論。 在第 20 章中,我們將從底層開始實現(xiàn)一個完整的多線程 Web 服務(wù)器。 最后的附錄中會包含一系列有關(guān)語言的實用參考資料。其中,附錄 A 會列舉 Rust 中全部的關(guān)鍵字,附錄 B 會列舉 Rust 中所有的運算符及其他符號,附錄 C 會包含標準庫中提供的可派生 trait,附錄 D 會介紹一些有用的開發(fā)工具,附錄 E 會解釋 Rust 的階段性版本機制。 當然,不管你怎樣閱讀本書都是可以的。假如你想要跳過某個特定的章節(jié),那就跳過吧,你可以在感到疑惑的時候再返回略過的那些部分。用你覺得最舒服的方式來閱讀本書就好! 在學(xué)習(xí) Rust 的過程中,一項尤為重要的能力是掌握如何閱讀編譯器顯示的錯誤提示信息,這些信息能夠引導(dǎo)你編寫出可用的代碼。為此,我們會故意提供許多無法通過編譯的示例,進而展示在相關(guān)情境下編譯器輸出的錯誤提示信息。所以,在本書中隨意挑選出來的示例也許根本就無法通過編譯!請仔細閱讀上下文來確定你嘗試運行的示例代碼是否是一段故意寫錯的代碼。在大部分情況下,我們會指引你將不能編譯的代碼糾正為正確版本。 Steve Klabnik曾是Rust的核心開發(fā)者及Rust文檔團隊的負責人。他時常參與各種演講,并且是一位十分多產(chǎn)的開源貢獻者。 Carol Nichols曾是Rust核心團隊中的成員,目前是Rust Crates.io團隊成員,也是Integer 32公司(全球首家專注于Rust的軟件咨詢公司)的聯(lián)合創(chuàng)始人,以及Rust Belt Rust(Rust鐵銹地帶)會議的組織者。 1 入門指南 1
你還可能感興趣
我要評論
|