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