Rust 附錄 E:版本

2023-03-22 15:17 更新
appendix-05-editions.md
commit 8cf0496bb8e56b683ea3f015871c8631684decf4

早在第一章,我們見過 cargo new 在 Cargo.toml 中增加了一些有關(guān) edition 的元數(shù)據(jù)。本附錄將解釋其意義!

Rust 語言和編譯器有一個為期 6 周的發(fā)布循環(huán)。這意味著用戶會穩(wěn)定得到新功能的更新。其他編程語言發(fā)布大更新但不甚頻繁;Rust 選擇更為頻繁的發(fā)布小更新。一段時間之后,所有這些小更新會日積月累。不過隨著小更新逐次的發(fā)布,或許很難回過頭來感嘆:“哇,從 Rust 1.10 到 Rust 1.31,Rust 的變化真大!”

每兩到三年,Rust 團隊會生成一個新的 Rust 版本edition)。每一個版本會結(jié)合已經(jīng)落地的功能,并提供一個清晰的帶有完整更新文檔和工具的功能包。新版本會作為常規(guī)的 6 周發(fā)布過程的一部分發(fā)布。

這為不同的人群提供了不同的功能:

  • 對于活躍的 Rust 用戶,其將增量的修改與易于理解的功能包相結(jié)合。
  • 對于非用戶,它表明發(fā)布了一些重大進展,這意味著 Rust 可能變得值得一試。
  • 對于 Rust 自身開發(fā)者,其提供了項目整體的集合點。

在本文檔編寫時,Rust 有三個可用版本:Rust 2015、 Rust 2018 和 Rust 2021。本書基于 Rust 2021 edition 風(fēng)格編寫。

Cargo.toml 中的 edition 字段表明代碼應(yīng)該使用哪個版本編譯。如果該字段不存在,其默認為 2015 以提供后向兼容性。

每個項目都可以選擇不同于默認的 2015 edition 的版本。這樣,版本可能會包含不兼容的修改,比如新增關(guān)鍵字可能會與代碼中的標識符沖突并導(dǎo)致錯誤。不過除非選擇兼容這些修改,(舊)代碼仍將能夠編譯,即便升級了 Rust 編譯器的版本。

所有 Rust 編譯器都支持任何之前存在的編譯器版本,并可以鏈接任何支持版本的 crate。編譯器修改只影響最初的解析代碼的過程。因此,如果你使用 Rust 2015 而某個依賴使用 Rust 2018,你的項目仍舊能夠編譯并使用該依賴。反之,若項目使用 Rust 2018 而依賴使用 Rust 2015 亦可工作。

有一點需要明確:大部分功能在所有版本中都能使用。開發(fā)者使用任何 Rust 版本將能繼續(xù)接收最新穩(wěn)定版的改進。然而在一些情況,主要是增加了新關(guān)鍵字的時候,則可能出現(xiàn)了只能用于新版本的功能。只需切換版本即可利用新版本的功能。

請查看 Edition Guide 了解更多細節(jié),這是一個完全介紹版本的書籍,包括如何通過 cargo fix 自動將代碼遷移到新版本。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號