1. 程式人生 > >Rust 1.31 釋出,帶來 Rust 2018

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 官網

更完整的更新情況檢視釋出公告