Rust實(shí)戰(zhàn)項(xiàng)目開(kāi)發(fā) 朱偉
定 價(jià):129 元
當(dāng)前圖書(shū)已被 1 所學(xué)校薦購(gòu)過(guò)!
查看明細(xì)
- 作者:朱偉
- 出版時(shí)間:2025/9/1
- ISBN:9787111787136
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類(lèi):
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
《Rust實(shí)戰(zhàn)項(xiàng)目開(kāi)發(fā)》是一本以實(shí)戰(zhàn)為主的Rust編程指南,每個(gè)章節(jié)都經(jīng)過(guò)了作者精心挑選和打磨。全書(shū)由3部分組成:第1部分(第1~2章),介紹了Rust實(shí)戰(zhàn)前需要掌握的基礎(chǔ)知識(shí)。第2部分(第3~10章),將Rust基礎(chǔ)知識(shí)融入實(shí)際項(xiàng)目中,向讀者詳細(xì)闡述了不同業(yè)務(wù)場(chǎng)景的實(shí)戰(zhàn)項(xiàng)目該怎么做,以及技術(shù)實(shí)現(xiàn)原理和運(yùn)行機(jī)制。第3部分(第11章),通過(guò)一個(gè)綜合應(yīng)用向讀者演示了如何在Rust語(yǔ)言中使用標(biāo)準(zhǔn)庫(kù)和常見(jiàn)的第三方庫(kù)構(gòu)建一個(gè)高性能、高并發(fā)的實(shí)際項(xiàng)目。這3部分的內(nèi)容,可幫助讀者更快、更輕松地上手Rust實(shí)戰(zhàn)項(xiàng)目開(kāi)發(fā),走向更為廣闊的職業(yè)生涯!禦ust實(shí)戰(zhàn)項(xiàng)目開(kāi)發(fā)》主要面向系統(tǒng)編程的開(kāi)發(fā)者、高等院校在校師生和Rust語(yǔ)言愛(ài)好者。
《Rust實(shí)戰(zhàn)項(xiàng)目開(kāi)發(fā)》圍繞“Rust是什么”“為什么使用Rust”“Rust是怎么解決問(wèn)題”,以及“Rust實(shí)踐中遇到的問(wèn)題如何解決”,以工程實(shí)踐為導(dǎo)向,全面整合了Rust在Web開(kāi)發(fā)、微服務(wù)、命令行工具(CLI)、圖形界面(GUI)、外部函數(shù)接口(FFI)調(diào)用等多元應(yīng)用場(chǎng)景,為廣大開(kāi)發(fā)者提供了一站式的解決方案。
Rust行業(yè)狀況Rust是一門(mén)通用系統(tǒng)級(jí)編程語(yǔ)言,以無(wú)GC且能保證內(nèi)存安全、類(lèi)型安全、并發(fā)安全和高性能而著稱(chēng)。近幾年在操作系統(tǒng)、分布式數(shù)據(jù)庫(kù)、微服務(wù)、網(wǎng)絡(luò)編程、命令行工具、前端開(kāi)發(fā)工具鏈、游戲開(kāi)發(fā)、嵌入式開(kāi)發(fā)等多個(gè)領(lǐng)域展現(xiàn)出強(qiáng)大的應(yīng)用潛力。2021年2月9日,Rust 基金會(huì)宣布成立,華為、AWS、Google、微軟、Mozilla、Facebook等知名科技行業(yè)領(lǐng)軍巨頭加入Rust 基金會(huì),成為白金成員,致力于在全球范圍內(nèi)推廣和發(fā)展Rust語(yǔ)言。根據(jù)Rust開(kāi)發(fā)者調(diào)查報(bào)告顯示,從2016年到2024年,Rust已連續(xù)八年成為StackOverflow語(yǔ)言榜上最受歡迎的語(yǔ)言之一,備受廣大開(kāi)發(fā)者的歡迎和喜愛(ài)。截止到2024年第一季度,全球Rust開(kāi)發(fā)者已達(dá)到400萬(wàn),這一增長(zhǎng)速度使Rust成為社區(qū)擴(kuò)張速度最快的編程語(yǔ)言之一。如何閱讀本書(shū)本書(shū)是按照不同內(nèi)容主題來(lái)組織的,基本上每個(gè)章節(jié)的內(nèi)容都是相互獨(dú)立的。讀者可以從頭到尾進(jìn)行閱讀,也可以挑選感興趣的章節(jié)進(jìn)行閱讀,邊學(xué)邊實(shí)際操作。這里需要說(shuō)明一點(diǎn):本書(shū)配套資源的內(nèi)容,作者會(huì)放在GitHub倉(cāng)庫(kù)中,讀者可以自行下載和查閱。以下是本書(shū)每個(gè)部分的內(nèi)容概述:第1部分 Rust語(yǔ)言基礎(chǔ)本部分由第1章和第2章組成,詳細(xì)介紹了在Rust實(shí)戰(zhàn)項(xiàng)目開(kāi)發(fā)前,需要掌握哪些Rust基礎(chǔ)知識(shí)。這部分的內(nèi)容,是全書(shū)實(shí)戰(zhàn)的基礎(chǔ)知識(shí)之一,希望每位讀者能夠靜下心來(lái)閱讀,并結(jié)合自身實(shí)際情況實(shí)戰(zhàn)演練。第2部分 Rust實(shí)際項(xiàng)目開(kāi)發(fā)本部分由第3~10章組成,將第一部分Rust基礎(chǔ)知識(shí)融入Rust實(shí)戰(zhàn)案例中,詳細(xì)闡述了Rust實(shí)戰(zhàn)項(xiàng)目的操作步驟、技術(shù)實(shí)現(xiàn)、運(yùn)行原理、注意事項(xiàng)及實(shí)戰(zhàn)技巧等,幫助讀者快速上手Rust實(shí)戰(zhàn)項(xiàng)目開(kāi)發(fā)。第3部分 Rust綜合應(yīng)用實(shí)戰(zhàn)本部分由第11章組成,將前兩個(gè)部分作為前提,以一個(gè)綜合應(yīng)用實(shí)戰(zhàn)向讀者演示了該如何使用Rust語(yǔ)言構(gòu)建一個(gè)高性能、高并發(fā)的實(shí)際項(xiàng)目,旨在幫助讀者更快、更輕松地使用Rust語(yǔ)言,從而走向更廣闊的職業(yè)生涯。前言本書(shū)Rust版本約定 Rust version不低于1.82.0。 Rust edition為2021。Rust語(yǔ)言的每個(gè)edition都包含了一些新的語(yǔ)言特性或?qū)ΜF(xiàn)有特性的改進(jìn),這些變化可能會(huì)涉及新的語(yǔ)法(語(yǔ)法糖)、函數(shù)、庫(kù)的支持、工具鏈的更新等方面,以確保Rust語(yǔ)言的持續(xù)發(fā)展和進(jìn)步。此外,Rust edition發(fā)布也考慮了向后兼容性,以確,F(xiàn)有的代碼能夠在新的Rust edition中繼續(xù)運(yùn)行。因此,本書(shū)中的全部Rust代碼同樣可以在Rust更高版本中運(yùn)行?闭`和支持由于本書(shū)內(nèi)容涉及范圍比較多,在撰寫(xiě)本書(shū)時(shí)難免有疏忽和不足之處,懇請(qǐng)讀者批評(píng)和指正。為了更好地方便讀者學(xué)習(xí)本書(shū)中的內(nèi)容,提供以下配套資源。 本書(shū)實(shí)戰(zhàn)項(xiàng)目源代碼:https://github.com/daheige/rust-in-action。 Rust Web框架實(shí)戰(zhàn):https://github.com/daheige/rs-api。 gRPC微服務(wù)框架實(shí)戰(zhàn):https://github.com/daheige/rs-rpc。 Rust-Cookbook開(kāi)源項(xiàng)目:https://github.com/daheige/rs-cookbook。 Rust基礎(chǔ)學(xué)習(xí)B站視頻:https://space.bilibili.com/580545629。 技術(shù)交流:關(guān)注視頻號(hào)大黑哥或GitHub賬號(hào)daheige。讀者可以根據(jù)實(shí)際情況查看和學(xué)習(xí)上述資源,以獲得更加豐富的實(shí)戰(zhàn)經(jīng)驗(yàn),并將所學(xué)知識(shí)應(yīng)用于不同領(lǐng)域的需求開(kāi)發(fā),進(jìn)一步加速自己的學(xué)習(xí)和成長(zhǎng)。如果讀者在閱讀本書(shū)的過(guò)程中,遇到錯(cuò)誤或疑惑,可以直接提交相關(guān)issue到本書(shū)源碼對(duì)應(yīng)的倉(cāng)庫(kù)中,或者發(fā)送郵件到zhuwei313@hotmail.com,作者會(huì)在第一時(shí)間關(guān)注和回復(fù)。如果讀者還有更多的寶貴意見(jiàn),也歡迎一起探討和交流。除此之外,作者還長(zhǎng)期致力于Go和Rust開(kāi)源項(xiàng)目共建,感興趣的讀者可以關(guān)注作者的GitHub賬號(hào),一起學(xué)習(xí)和交流。致謝在我編寫(xiě)本書(shū)時(shí),家人給予了我巨大的支持和理解,讓我可以全身心投入到寫(xiě)作中。在此我將本書(shū)獻(xiàn)給家人,以及每一位Rust開(kāi)發(fā)者和Rust愛(ài)好者。感謝Rust官方和Rust社區(qū)帶來(lái)了如此優(yōu)秀的編程語(yǔ)言,讓我可以編寫(xiě)更高效、更安全的代碼,同時(shí)也提升了自己工程實(shí)踐和抽象設(shè)計(jì)的能力。感謝Fadeway(王偉)、Damonxue(薛慧郎)、Chair、Brice(云翔)、Houseme(智剛)、王官峰、蔡明師、李正強(qiáng)等小伙伴對(duì)本書(shū)的校對(duì)和支持。感謝機(jī)械工業(yè)出版社的編輯李培培,她在本書(shū)寫(xiě)作過(guò)程中給了我寶貴的建議和耐心指導(dǎo)。同時(shí),也感謝出版社的所有工作人員對(duì)本書(shū)的辛勤付出。作者
朱偉(大黑哥),資深Go開(kāi)發(fā)者(布道者)、資深PHP架構(gòu)師、資深Nodejs開(kāi)發(fā)者、Rust語(yǔ)言布道者。作者具有10多年一線開(kāi)發(fā)經(jīng)驗(yàn),先后從事海量郵件群發(fā)系統(tǒng)、千萬(wàn)級(jí)電商平臺(tái)和金融平臺(tái)、游戲平臺(tái)、Saas等不同行業(yè)的開(kāi)發(fā)和架構(gòu)設(shè)計(jì)。在微服務(wù)、敏捷開(kāi)發(fā)、項(xiàng)目管理、架構(gòu)設(shè)計(jì)、Go項(xiàng)目開(kāi)發(fā)、Rust系統(tǒng)編程等不同領(lǐng)域,具有深入的研究和豐富的實(shí)戰(zhàn)經(jīng)驗(yàn),長(zhǎng)期致力于Go、Rust、Nodejs多個(gè)開(kāi)源項(xiàng)目共建。
序一序二推薦語(yǔ)前言第1部分Rust語(yǔ)言基礎(chǔ)第1章Rust語(yǔ)言簡(jiǎn)介1.1Rust基本介紹1.1.1Rust是什么1.1.2為什么需要Rust1.1.3Rust應(yīng)用領(lǐng)域1.1.4Rust未來(lái)發(fā)展1.2Rust初步體驗(yàn)1.2.1Rust安裝1.2.2Rust鏡像源配置1.2.3Rust單元測(cè)試、集成測(cè)試和基準(zhǔn)測(cè)試1.3Rust工具鏈1.3.1Rust編輯器選擇1.3.2cargo工具使用1.3.3rustup版本更新1.4Rust交叉編譯1.4.1在macOS上實(shí)現(xiàn)交叉編譯1.4.2在Windows上實(shí)現(xiàn)交叉編譯1.4.3通過(guò)cross工具實(shí)現(xiàn)跨平臺(tái)交叉編譯第2章Rust模塊化編程實(shí)戰(zhàn)2.1Rust中的模塊化編程簡(jiǎn)介2.2Package(包)2.2.1二進(jìn)制類(lèi)型的包2.2.2library類(lèi)型的包2.3Module(模塊)2.3.1Module的定義與使用2.3.2使用pub改變模塊的可見(jiàn)性2.3.3使用use引入模塊和模塊中的成員2.3.4使用super與self簡(jiǎn)化模塊路徑2.3.5使用pub use重新導(dǎo)出2.4模塊層次結(jié)構(gòu)劃分2.4.1將模塊映射到文件2.4.2將模塊映射到目錄2.5Crate(單元包)管理2.5.1crates.io托管平臺(tái)2.5.2編寫(xiě)一個(gè)隨機(jī)數(shù)生成的實(shí)例2.5.3編寫(xiě)一個(gè)終端輸出變色的實(shí)例2.5.4編寫(xiě)與發(fā)布一個(gè)自定義的單元包Rust實(shí)戰(zhàn)項(xiàng)目開(kāi)發(fā)第2部分Rust實(shí)際項(xiàng)目開(kāi)發(fā)第3章Rust JSON實(shí)戰(zhàn)3.1JSON基礎(chǔ)3.1.1JSON基本數(shù)據(jù)類(lèi)型3.1.2JSON序列化和反序列化3.2serde基本簡(jiǎn)介3.3serde_json基本操作3.3.1serde_json序列化與反序列化3.3.2serde_json自定義序列化和反序列化3.3.3serde_json中的json!宏3.3.4serde_json其他高級(jí)特性3.3.5編寫(xiě)一個(gè)JSON配置文件讀取案例第4章Rust Web編程實(shí)戰(zhàn)4.1Web編程簡(jiǎn)介4.1.1TCP4.1.2HTTP4.2使用Rust構(gòu)建Web Server4.2.1創(chuàng)建一個(gè)簡(jiǎn)單的單線程Web Server4.2.2將單線程Web Server重構(gòu)為多線程Web Server4.2.3Web服務(wù)平滑退出4.3Rust Web編程第三方庫(kù)操作4.3.1tide庫(kù)使用4.3.2axum庫(kù)使用4.3.3編寫(xiě)一個(gè)簡(jiǎn)單的短鏈接服務(wù)第5章Rust命令行界面實(shí)戰(zhàn)5.1CLI簡(jiǎn)介5.1.1什么是CLI5.1.2CLI使用場(chǎng)景5.2Rust命令行參數(shù)解析5.2.1從終端獲取CLI參數(shù)5.2.2CLI參數(shù)類(lèi)型轉(zhuǎn)換5.3第三方CLI庫(kù)操作5.3.1使用structopt庫(kù)處理CLI參數(shù)5.3.2使用clap庫(kù)處理CLI參數(shù)5.3.3編寫(xiě)一個(gè)圖片壓縮、裁剪和旋轉(zhuǎn)的CLI工具5.3.4編寫(xiě)一個(gè)MySQL表結(jié)構(gòu)轉(zhuǎn)換為Rust結(jié)構(gòu)體的CLI工具第6章Rust crontab實(shí)戰(zhàn)6.1crontab簡(jiǎn)介6.1.1什么是crontab6.1.2crontab基本用法6.2crontab使用時(shí)的注意事項(xiàng)6.2.1crontab執(zhí)行路徑問(wèn)題6.2.2crontab讀取環(huán)境變量問(wèn)題6.3Rust中第三方cron庫(kù)的基本操作6.3.1第三方庫(kù)rcron的使用6.3.2編寫(xiě)一個(gè)日志文件自動(dòng)切割的工具6.3.3編寫(xiě)一個(gè)MySQL數(shù)據(jù)庫(kù)定時(shí)備份的工具第7章Rust中的數(shù)據(jù)庫(kù)和緩存實(shí)戰(zhàn)7.1數(shù)據(jù)庫(kù)和緩存簡(jiǎn)介7.2MySQL7.2.1MySQL下載和安裝7.2.2MySQL基本用法7.3Redis7.3.1Redis下載和安裝7.3.2Redis基本數(shù)據(jù)類(lèi)型7.4Rust中的MySQL和Redis操作7.4.1使用sqlx庫(kù)操作MySQL7.4.2使用redis-rs操作Redis7.4.3編寫(xiě)一個(gè)增量同步的閱讀數(shù)服務(wù)第8章Rust中的消息隊(duì)列實(shí)戰(zhàn)8.1消息隊(duì)列簡(jiǎn)介8.2Kafka基礎(chǔ)8.2.1Kafka安裝8.2.2Kafka基本概念8.3Pulsar基礎(chǔ)8.3.1Pulsar安裝8.3.2Pulsar基本概念8.4Rust中的Kafka和Pulsar操作8.4.1使用Kafka Client庫(kù)操作Kafka8.4.2使用Pulsar Client庫(kù)操作Pulsar8.4.3編寫(xiě)一個(gè)簡(jiǎn)單的積分系統(tǒng)第9章Rust FFI調(diào)用實(shí)戰(zhàn)9.1Rust安全性和不安全性9.2Rust FFI調(diào)用簡(jiǎn)介9.2.1FFI調(diào)用的安全性和不安全性9.2.2FFI調(diào)用的注意事項(xiàng)9.3Rust Qt綁定9.3.1Qt安裝9.3.2Rust Qt相關(guān)綁定庫(kù)簡(jiǎn)介9.3.3使用cxx-qt編寫(xiě)一個(gè)桌面應(yīng)用程序9.3.4使用qmetaobject編寫(xiě)一個(gè)桌面應(yīng)用程序9.4Rust與其他語(yǔ)言交互9.4.1使用cc庫(kù)在Rust中調(diào)用C語(yǔ)言代碼9.4.2使用neon庫(kù)為Node.js編寫(xiě)原生拓展9.4.3使用PyO3為Python編寫(xiě)拓展第10章Rust并發(fā)編程與異步編程實(shí)戰(zhàn)10.1并發(fā)與并行10.2Rust并發(fā)編程10.2.1使用spawn創(chuàng)建線程10.2.2自定義線程和move關(guān)鍵字10.2.3Mutex和Arc10.2.4channel消息傳遞10.3Rust異步編程10.3.1為什么需要異步編程10.3.2asyncawait基礎(chǔ)10.3.3async中的move關(guān)鍵字10.3.4tokio運(yùn)行時(shí)第3部分Rust綜合應(yīng)用實(shí)戰(zhàn)第11章構(gòu)建一個(gè)高并發(fā)的QA(問(wèn)答)系統(tǒng)實(shí)戰(zhàn)11.1QA系統(tǒng)架構(gòu)設(shè)計(jì)11.1.1功能分析11.1.2架構(gòu)設(shè)計(jì)11.1.3pb協(xié)議定義11.2QA系統(tǒng)layout分層11.3QA系統(tǒng)技術(shù)實(shí)現(xiàn)11.3.1使用tonic庫(kù)編寫(xiě)gRPC微服務(wù)接口11.3.2使用serde_yaml讀取配置文件11.3.3使用Redis計(jì)數(shù)器實(shí)現(xiàn)問(wèn)題閱讀數(shù)功能11.3.4使用Pulsar實(shí)現(xiàn)回答點(diǎn)贊功能11.3.5使用log和env_logger記錄日志11.3.6gRPC HTTP網(wǎng)關(guān)層11.4QA系統(tǒng)的服務(wù)可觀測(cè)性建設(shè)11.4.1metrics接入11.4.2prometheus部署與接入11.4.3grafana部署與接入11.5QA系統(tǒng)的部署方式選擇11.5.1使用supervisor工具部署二進(jìn)制文件11.5.2使用Rust Docker鏡像構(gòu)建與發(fā)布參考文獻(xiàn)