想學(xué) Rust 但不知道從哪里開始?讀讀該文
之前給大家推薦了相關(guān)的入門書籍,今天再來一個(gè)全面的 Rust 免費(fèi)資源(有些適合收藏查閱)。

這篇文章包含如下內(nèi)容:
介紹 Rust 工具鏈 Rust 免費(fèi)在線圖書和資源 Rust 官方鏈接 視頻教程 交互式學(xué)習(xí) Rust 社區(qū) Rust IDE 擴(kuò)展 Rust 生態(tài) 進(jìn)階資源
01 介紹
Rust 是一門現(xiàn)代的系統(tǒng)編程語言,專注于安全,速度和并發(fā)。
這個(gè)基準(zhǔn)測試[1]圖表顯示了 Rust 比哪些編程語言更快。你可以在此處[2]查看與 Go 語言的比較。

在本文中,你將找到基礎(chǔ) Rust 工具,最新文檔,教程,視頻和在線資源。
閱讀此書后,你可以根據(jù)自己的情況,選擇適合你的學(xué)習(xí)風(fēng)格的方式開始有效地學(xué)習(xí) Rust 編程語言。
安裝 Rust 后,也就安裝了 rustc,cargo,rustup 和其他標(biāo)準(zhǔn)工具。因此,讓我們先了解 Rust 工具鏈,然后再看看其他資源。
02 Rust工具鏈
工具鏈?zhǔn)且唤M幫助語言生成功能代碼的工具。它們可以通過簡單的編譯器和鏈接器程序,或其他庫,IDE 或調(diào)試器提供擴(kuò)展功能。
Rustup
rustup[3] 用于安裝 Rust 編程語言,使你能夠輕松地在穩(wěn)定版,beta 版和 nightly 版編譯器之間切換,并保持它們的更新。
你可以這樣更新 Rust:
$?rustup?update

rustc
rustc 是 Rust 編程語言的編譯器。編譯器是將源代碼編譯成二進(jìn)制,比如庫或可執(zhí)行文件。通常我們會(huì)使用 Cargo 來運(yùn)行 Rust 程序,而不是 rustc。
可以通過參考手冊查看 rustc 的詳細(xì)信息:https://doc.rust-lang.org/rustc/what-is-rustc.html。
Cargo

Cargo 是 Rust 的包(package)管理器。Cargo 下載 Rust 包的依賴項(xiàng),編譯包,制作可分發(fā)的包,然后可以將它們上傳到 Rust 社區(qū)的包 registry,即 crates.io。

同樣的,詳細(xì)內(nèi)容可以看 Cargo 的參考手冊,即 The Cargo Book:https://doc.rust-lang.org/cargo/。
其他官方工具
Clippy:https://github.com/rust-lang/rust-clippy,這是一個(gè) Rust 的 linter 工具; rustfmt: https://github.com/rust-lang/rustfmt,根據(jù)樣式準(zhǔn)則格式化 Rust 代碼;
其他更多官方工具可以通過這個(gè)鏈接查看:https://rust-lang-nursery.github.io/rust-toolstate/。
03 Rust 免費(fèi)在線書籍和資源
一般人學(xué)習(xí) Rust 會(huì)找到官方的這本書:《The Rust Programming Language[4]》,不過這本書不一定是最好的。關(guān)于入門圖書可以閱讀該文。但這本書畢竟是官方出的,可以后續(xù)翻閱相關(guān)主題。比如它通過許多示例和圖表解釋了很多細(xì)節(jié)。

如果你喜歡通過示例的方式學(xué)習(xí),Rust by Example[5] 很適合你。它是可運(yùn)行示例的集合,這些示例說明了各種 Rust 概念和標(biāo)準(zhǔn)庫。一共有 20 多個(gè)示例。

你可以從瀏覽器編輯和運(yùn)行 Rust 代碼(這是通過 Rust Playground 實(shí)現(xiàn)的):


Rust Cookbook 是一本簡單示例集合的在線免費(fèi)書籍,這些示例通常都是完成某個(gè)任務(wù)的最佳實(shí)踐,例子中會(huì)大量使用 Rust 生態(tài)系統(tǒng)中的 crates。圖書地址:https://rust-lang-nursery.github.io/rust-cookbook/intro.html。

04 Rust 官方鏈接
Rust 的官方網(wǎng)站:https://www.rust-lang.org/,官網(wǎng)支持多種國家和地區(qū)語言。
crate 是 Rust 社區(qū)二進(jìn)制或庫的 Registry,地址:https://crates.io/。
一個(gè) crate 是功能的集合,而一個(gè)包(package)包含一個(gè)或多個(gè) crate。一個(gè)包會(huì)有一個(gè) Cargo.toml 文件,用來描述怎樣構(gòu)建這些 crate。
Rust 標(biāo)準(zhǔn)庫地址:https://doc.rust-lang.org/std/。
Rust Playground 讓你可以在瀏覽器中試用 Rust,同時(shí)可以方便的分享自己的代碼給別人。地址:https://play.rust-lang.org/。
其他資源鏈接
Learn Rust[6] 提供了你可能需要的文檔和指南。 Awesome Rust[7] 分類整理各種 Rust 庫和工具。 Ferrous Teaching Material[8] 包括基礎(chǔ)到高級主題的幻燈片,它提供了示例代碼和簡明的解釋。
Rust Errors
如果你想了解詳細(xì)的 Rust 錯(cuò)誤,可以查看 Rust 編譯器錯(cuò)誤索引[9],其中列出所有的 Rust 錯(cuò)誤和示例。
例如終端有如下錯(cuò)誤:

在這個(gè)錯(cuò)誤索引中:

05 視頻教程
如果你喜歡通過視頻來學(xué)習(xí),B 站有一個(gè) Rust 的免費(fèi)視頻教程,參考官方那本書進(jìn)行講解的。Rust 編程語言入門:https://www.bilibili.com/video/BV1hp4y1k7SV。
此外,在 B 站搜索 Rust 編程,發(fā)現(xiàn)視頻還是挺多的,有些是國外的視頻,但 B 站的 Up 主們加上了字幕,大家自己去搜索吧。
06 交互式學(xué)習(xí)
只看不練是永遠(yuǎn)學(xué)不會(huì)的。這里推薦一些交會(huì)式學(xué)習(xí)的教程。
Tour of Rust
Tour of Rust:https://tourofrust.com/,本教程旨在循序漸進(jìn)地介紹 Rust 編程語言的特性。它涵蓋了基礎(chǔ)知識(shí)、基本控制流、基本數(shù)據(jù)結(jié)構(gòu)類型和泛型類型。這個(gè) Rust 語言之旅是一個(gè)開源項(xiàng)目,有眾多語言的翻譯版本,簡體中文版:https://tourofrust.com/00_zh-cn.html。(不過目前簡體中文版還有第 8 章沒有翻譯)

rustlings
rustlings[10] 提供了一些小練習(xí),在官方 GitHub 賬號下,讓你習(xí)慣于閱讀和編寫 Rust 代碼。你可以將其與官方的那本書搭配學(xué)習(xí)。
安裝好 Rust 后,可以通過如下命令安裝 rustlings(Mac/Linux),Windows 下看 GitHub 首頁的說明安裝:
$?cd?~
$?curl?-L?https://git.io/install-rustlings?|?bash
成功后,在終端執(zhí)行如下命令:
$?cd?~/rustlings
$?rustlings?watch
這時(shí)會(huì)出現(xiàn)如下錯(cuò)誤:

我們打開 exercises/variables/variables1.rs 文件,在 x = 5 前面加上 let,保存,這個(gè) watch 界面變成:

是不是很帥?!
也就是說,rustlings 中的練習(xí)都是故意未完成的。當(dāng)你完成一個(gè)練習(xí)后,將 // I AM NOT DONE 這句刪除,rustlings watch 會(huì)自動(dòng)監(jiān)聽下一個(gè)練習(xí)。
而且每一個(gè)練習(xí)文件開頭給了類似這樣的提示:
//?Make?me?compile!?Execute?the?command?`rustlings?hint?variables1`?if?you?want?a?hint?:)
你可以按照它的提示,執(zhí)行:
$?rustlings?hint?variables1
Hint:?The?declaration?on?line?12?is?missing?a?keyword?that?is?needed?in?Rust
to?create?a?new?variable?binding.
它告訴你應(yīng)該怎么做。
Exercism
100% 免費(fèi)的代碼實(shí)踐和指導(dǎo)。它完全是開源的,由數(shù)千名志愿者貢獻(xiàn)。它將指導(dǎo)你如何在你的電腦上安裝它。你不僅可以學(xué)習(xí) Rust,還可以學(xué)習(xí)其他 50 種編程語言。
當(dāng)你完成了一個(gè)編碼練習(xí)后,可以上傳你的解決方案,并由一個(gè)導(dǎo)師 review。

07 Rust 社區(qū)
博客和新聞(英文)
Rust Community page:https://www.rust-lang.org/community 推薦《Rust周刊》:https://this-week-in-rust.org/,它每周提供最新的關(guān)于 Rust 的信息 Rust 官方博客:https://blog.rust-lang.org/,核心團(tuán)隊(duì)利用這個(gè)博客來發(fā)布 Rust 的重大進(jìn)展 Inside Rust 博客:https://blog.rust-lang.org/inside-rust/index.html,也是官方的博客,不過針對那些希望參與 Rust 開發(fā)的人
獲取幫助?
Rust Discord:https://discord.com/invite/rust-lang
Rust Users Forum:https://users.rust-lang.org/
Stackoverflow 和 Reddit 等。
不過國內(nèi)用戶可以在 Rust語言中文社區(qū) 交流,地址:https://rustcc.cn/。當(dāng)然,國內(nèi)一般都有 QQ 群、微信群。
Rust Meetup
這兩年,國內(nèi)社區(qū)也在組織相關(guān)的活動(dòng),比如 Rust China Conf 2020。最近 Rust 中文社區(qū)也在組織各個(gè)城市的 Meetup,比如 2021 年 4 月 10 日在北京的,可以通過這個(gè)鏈接報(bào)名:https://www.huodongxing.com/event/5590522571600 ,免費(fèi)的,很棒!
08 Rust IDE 擴(kuò)展
Rust 官方列出了支持 Rust 的編輯器擴(kuò)展:https://www.rust-lang.org/tools。
如果你是 VSCode 用戶,有官方的擴(kuò)展(rust),也有社區(qū)的(rust-analyzer),目前看,似乎社區(qū)的擴(kuò)展更好用。
不過官方已經(jīng)在開發(fā) rls 2.0,目標(biāo)是獲得更好的體驗(yàn),期待一下。
這個(gè)網(wǎng)站:https://areweideyet.com/,可以查看各個(gè)編輯器對 Rust 的支持程度。

09 Rust 生態(tài)
你可以在 crates.io 中找到許多庫。列一些你可能感興趣的:
Web 框架
根據(jù) Web 框架基準(zhǔn)測試[11],Actix 是最快的框架。有十幾個(gè)活躍的 Rust Web 框架。**Actix**[12], **Rocket**[13], **Gotham**[14], **Seed**[15] 等。你可以從 Web 框架比較[16]中了解更多信息。
Web 開發(fā)
最快的 Rust 模板引擎:https://github.com/Kogia-sima/sailfish/,據(jù)說比 handlebars 快 200 倍。
WebAssembly
如果你對 WebAssembly 感興趣,以下鏈接可以看看:
官方關(guān)于 WebAssembly 的介紹:https://www.rust-lang.org/what/wasm 一本專門關(guān)于 Rust 和 WebAssembly 的書:https://rustwasm.github.io/docs/book/ 一個(gè) Rust/Wasm 框架:https://github.com/yewstack/yew
更多資料可以通過網(wǎng)絡(luò)搜索到。
網(wǎng)絡(luò)編程
官方關(guān)于這塊內(nèi)容有專門的介紹:https://www.rust-lang.org/what/networking。
嵌入式開發(fā)
官方頁面:https://www.rust-lang.org/what/embedded Rust 嵌入式開發(fā)的圖書:https://docs.rust-embedded.org/book/intro/index.html
命令行程序
官方頁面:https://www.rust-lang.org/what/cli Rustbox[17] 是一個(gè) API 庫,它允許程序員編寫基于文本的用戶界面 。。。
在 awesome-rust 中有很多庫。
操作系統(tǒng)開發(fā)
有一個(gè)專門的網(wǎng)站:https://rust-osdev.com/。
其他語言綁定
這里可以找到:https://crates.io/keywords/bindings。
ORM
Diesel:http://diesel.rs/,是用于 Rust 的,安全可擴(kuò)展的 ORM 和查詢生成器。
10 進(jìn)階資源
學(xué)習(xí)完基礎(chǔ),入門 Rust 后,根據(jù)自己的興趣和需要,可以看看下面這些進(jìn)階(或?qū)崙?zhàn))資源。
**Command Line Applications in Rust**[18]:使用 Rust 編寫命令行應(yīng)用程序的技巧和實(shí)戰(zhàn)。 **Rust API Guidelines**[19]:Rust API 指南,是關(guān)于如何設(shè)計(jì) Rust 語言 API 的一些建議。 Rust 語言 Cheat Sheet:https://cheats.rs/,適合有經(jīng)驗(yàn)的程序員和中級 Rust 用戶。如果你更喜歡視覺示例驅(qū)動(dòng)的內(nèi)容,這是為你準(zhǔn)備的。你可以從它的 Github repo 下載 PDF。 **Rust Forge**[20]:對 Rust 一些有用的補(bǔ)充文檔。 **The Rust Reference**[21]:Rust 編程語言的主要參考。它提供了語言的結(jié)構(gòu)和使用、內(nèi)存模型、并發(fā)模型、運(yùn)行時(shí)服務(wù)等等。 Rust 設(shè)計(jì)模式[22] 。。。
資源還有很多很多,不一一列舉了。
11 結(jié)論
除了以上列舉的,肯定還有很多其他資源。目前,國內(nèi)用戶關(guān)于 Rust 的博客還沒有來得及收集,有機(jī)會(huì)收集收集,分享給大家。
參考資料
基準(zhǔn)測試: https://benchmarksgame-team.pages.debian.net/benchmarksgame/which-programs-are-fastest.html
[2]此處: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/rust-go.html
[3]rustup: https://github.com/rust-lang/rustup
[4]The Rust Programming Language: https://doc.rust-lang.org/book/
[5]Rust by Example: https://doc.rust-lang.org/rust-by-example/index.html
[6]Learn Rust: https://www.rust-lang.org/learn
[7]Awesome Rust: https://github.com/rust-unofficial/awesome-rust
[8]Ferrous Teaching Material: https://ferrous-systems.github.io/teaching-material/
[9]Rust 編譯器錯(cuò)誤索引: https://doc.rust-lang.org/error-index.html
[10]rustlings: https://github.com/rust-lang/rustlings
[11]Web 框架基準(zhǔn)測試: https://www.techempower.com/benchmarks/#section=data-r19
[12]Actix: https://github.com/actix/actix
[13]Rocket: https://rocket.rs/
[14]Gotham: https://gotham.rs/
[15]Seed: https://github.com/seed-rs/seed
[16]Web 框架比較: https://github.com/flosse/rust-web-framework-comparison
[17]Rustbox: https://github.com/gchp/rustbox
[18]Command Line Applications in Rust: https://rust-cli.github.io/book/index.html
[19]Rust API Guidelines: https://rust-lang.github.io/api-guidelines/
[20]Rust Forge: https://forge.rust-lang.org/index.html
[21]The Rust Reference: https://doc.rust-lang.org/reference/introduction.html
[22]Rust 設(shè)計(jì)模式: https://github.com/rust-unofficial/patterns
推薦閱讀
