Rust 1.31 釋出,帶來 Rust 2018
Rust 1.31.0 stable 釋出了,這也標誌著 Rust 2018 版本的第一次迭代釋出。
Rust 2018 版本釋出計劃是 Rust 今年 3 月份提出來的,它是 Rust 1.0(Rust 2015)以來的首個主要新版本,整合了 Rust 1.29 - Rust 1.31 這幾個版本,並且作為 2018 全年度穩定功能的結晶,同時提供與相關的精美文件、工具與庫,包括 IDE 支援、新網站等。
此版本主要亮點包括:
1、改進 NLL 異常,現在將接受一些以前會拒絕的有效程式碼。
2、模組系統變化,新版本引入了一些路徑工作方式的變化,簡化了模組系統,使其更加清晰:
大部分情況下不再需要 extern crate 。
可以直接使用 use 引入巨集,而不再需要使用 #[macro_use] 屬性。
絕對路徑以 crate 名開頭,關鍵字 crate 指代當前 crate。
foo.rs 和 foo/ 子目錄共存,將子模組放在子目錄中時不再需要 mod.rs。
3、為 impl 塊和函式定義添加了一些額外的省略規則,如:
impl<'a> Reader for BufReader<'a> { // methods go here }
可以寫成:
impl Reader for BufReader<'_> { // methods go here }
4、新增常函式 const fn,樣式如下:
const fn foo(x: i32) -> i32 { x + 1 }
const fn 可以像常函式一樣呼叫,也可以在任何常量上下文中使用,但有在編譯和執行階段執行的區別,例如:
const SIX: i32 = foo(5);
將在編譯時執行 foo。
5、Rust 2018 工具生態系統更加成熟了。從 Rust 1.0 開始,Cargo、Rustdoc 和 Rustup 一直是重要的工具,而在 2018 版本中,為所有使用者提供了新一代工具:Clippy、Rustfmt 和 IDE 支援。
Clippy:Rust 的 linter,目前處於 1.0 階段,它具有與 rustc 相同的 lint 穩定性保證。新的 lint 除非棄用,否則無法刪除,也就是說在 Clippy 下編譯的程式碼將繼續在 Clippy 下編譯,但是可能會丟擲新的警告。
Rustfmt:這是一種用於格式化 Rust 程式碼的工具。
IDE 支援是 Rust 最需要的工具功能之一,現在將支援多種選擇:
6、重寫文件,The Rust Programming Language(TRPL)。
7、新的 Rust 官網。
更完整的更新情況檢視釋出公告。