W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
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 有三個可用版本: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
自動將代碼遷移到新版本。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: