Rust從入門到精通-01-簡介
1、rust 從哪里來
Rust語言在2006年作為 Mozilla 員工 Graydon Hoare 的私人項(xiàng)目出現(xiàn),而 Mozilla 于 2009 年開始贊助這個(gè)項(xiàng)目。
第一個(gè)有版本號(hào)的 Rust 編譯器于2012 年 1 月發(fā)布。Rust 1.0 是第一個(gè)穩(wěn)定版本,于 2015年5月15日發(fā)布。
Graydon Hoare 是一個(gè)職業(yè)編程語言工程師,其日常工作就是給其他語言開發(fā)編譯器和工具集,但是不會(huì)參與語言本身的設(shè)計(jì),由于這種工作性質(zhì),他接觸過很多編程語言,了解各種語言的優(yōu)缺點(diǎn)。
比如 c 和 c++,性能比較好,但是類型系統(tǒng)和內(nèi)存都不太安全;一些擁有 GC 的語言,比如Java、golang、kotlin等,內(nèi)存是安全的,但是性能卻比較低。
一天下班,他回到公寓發(fā)現(xiàn)電梯居然壞了,而且不是第一次了,他住在 21 樓,只能硬著頭皮爬樓梯。
像電梯這種嵌入式設(shè)備里,軟件大多是用 C 或 C++ 寫的。這類語言運(yùn)行快、占空間小,但也容易出錯(cuò),尤其是容易引入“內(nèi)存漏洞”——只要處理不當(dāng),程序就會(huì)直接崩潰。
于是 Graydon Hoare 萌生了自己開發(fā)一門語言的想法,這門語言就是 Rust。
靈感來自一種非常頑強(qiáng)的真菌——在他眼里,這個(gè)名字意味著“為生存而過度設(shè)計(jì)”。
2、rust logo

Rust 的 logo 承載了創(chuàng)造者對(duì)該語言的期望:
①、Rust 這個(gè)單詞是由 Trust 和 Robust 組合而成,暗示了信任(Trust)和魯棒性(或健壯性、Robust)。
②、Rust Logo 的形狀與一種叫做銹菌的真菌相似,這種真菌生命力非常頑強(qiáng),在其生命周期內(nèi)可產(chǎn)生多達(dá) 5 種孢子類型,這 5 種生命形態(tài)還可以相互轉(zhuǎn)化。
也就是魯棒性(健壯性)非常強(qiáng)。其 Logo 上面的 5 個(gè)小圓孔,與銹菌的 5 種生命形態(tài)相對(duì)應(yīng),也在暗示 Rust 語言超強(qiáng)的健壯性。
3、rust 是什么
在 rust 官網(wǎng):https://www.rust-lang.org/ ,有這樣一句醒目的話:

Rust 是一門賦予每個(gè)人構(gòu)建可靠且高效軟件能力的語言。
Rust 是一門系統(tǒng)級(jí)編程語言,有三大特點(diǎn):
①、運(yùn)行快且內(nèi)存利用率高
②、可靠,保證內(nèi)存安全和線程安全
③、生產(chǎn)效率高,擁有出色的文檔和友好的編譯器

4、rust 語言版本說明
rust 語言版本從三個(gè)不同的維度來講,包括三個(gè)概念。
4.1 語義化版本

其格式為:主版本號(hào).次版本號(hào).修訂號(hào),依次用 句點(diǎn) 隔開。
簡單說下語義版本號(hào)遞增規(guī)則:
①、主版本號(hào):當(dāng)做了不兼容的 API 修改。
②、次版本號(hào):當(dāng)做了向下兼容的功能性新增。
③、修訂號(hào):當(dāng)做了向下兼容的問題修正。
4.2 發(fā)行版本
https://github.com/rust-lang/rust/branches/all

①、master 分支:對(duì)于一個(gè)發(fā)行版本
②、beta 分支:對(duì)應(yīng) Beta 版本,也叫測試版本。
③、stable 分支:對(duì)應(yīng) Stable 發(fā)行版,也叫穩(wěn)定版。
通常穩(wěn)定版和測試版每 6 周 發(fā)布一次,一般來說,會(huì)先發(fā)布測試版,經(jīng)過一段時(shí)間測試,在進(jìn)行發(fā)行穩(wěn)定版。
4.3 Edition 版次
可以看到每個(gè)通過 cargo工具(Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理器,后面會(huì)詳細(xì)介紹) 創(chuàng)建的 rust項(xiàng)目的 Cargo.toml文件。

版次的意義和語義化是正交的概念,方便rust自身的進(jìn)化。
截止到2025年,目前rust有四個(gè)版次,分別是 rust2015 和 rust2018、rust2021、rust2024。
| Edition | 發(fā)布年份 | Cargo.toml 配置 |
特性亮點(diǎn) |
|---|---|---|---|
| 2015 | 2015 年 | edition = "2015"(默認(rèn)) |
原始版本,宏系統(tǒng)、模塊路徑較老舊。 |
| 2018 | 2018 年 | edition = "2018" |
新模塊系統(tǒng) (use 更直觀)、非宏的 async/await 支持、統(tǒng)一宏語法(macro_rules! vs macro!)等。 |
| 2021 | 2021 年 | edition = "2021" |
更好的 panic 處理、預(yù)導(dǎo)入的 prelude 增強(qiáng)、IntoIterator for arrays、閉包捕獲改進(jìn)等。 |
| 2024 | 2024 年 | edition = "2024" |
更現(xiàn)代的錯(cuò)誤處理模型(如 try_blocks 穩(wěn)定)、模塊路徑一致性、更加一致的 trait 解析等。 |
因?yàn)閞ust每6周發(fā)布一次新的語義化版本,版本更新迭代速度快,但是版次通常每 3 年發(fā)布一次,之所以存在版次和語義化兩種概念,我們可以看這樣一個(gè)例子:
例如添加可能與代碼中的標(biāo)識(shí)符沖突的新關(guān)鍵字,比如 ”async"和“await”,剛開始rust是沒有異步的概念,后面我們要添加這兩個(gè)關(guān)鍵詞,但是舊代碼可能會(huì)把這兩個(gè)關(guān)鍵詞當(dāng)做變量名來使用,這時(shí)候如果只有語義化的概念,我們升級(jí)rust版本號(hào),就會(huì)造成舊代碼編譯報(bào)錯(cuò)。
但是增加了版次的概念就不同了,我們對(duì)于之前的代碼編譯方式選擇之前的版次,新的代碼編譯方式選擇新的版次,那么問題就解決了。
因此,如果你正在使用 Rust 2015,并且您的某個(gè)依賴項(xiàng)使用 Rust 2018,那么一切正常
開發(fā)者可以在 Rust 包管理配置文件 Cargo.toml 來配置 edition = "2018",表示依賴 2018 版次。
編譯的時(shí)候可以通過:
rustc --edition 2015|2018|2021

5、rust 能干什么
主流的互聯(lián)網(wǎng)公司都把 Rust 納入主力語言,比如開發(fā)操作系統(tǒng) Redox/Fuchsia、高性能網(wǎng)絡(luò) Tokio、應(yīng)用的高并發(fā)后端 TiKV,甚至客戶端軟件本身(飛書)。
Rust 除了在其傳統(tǒng)的系統(tǒng)開發(fā)領(lǐng)域,如操作系統(tǒng)、設(shè)備驅(qū)動(dòng)、嵌入式等方向高歌猛進(jìn)之外,還在服務(wù)端高性能、高并發(fā)場景遍地開花。

浙公網(wǎng)安備 33010602011771號(hào)