Rust 1.58.0 釋出

2022-01-14 09:00:18

Rust 1.58.0 現已釋出,該版本帶來了在格式字串中捕獲的識別符號、改變了 Windows 上的 Command 搜尋路徑,在標準庫中增加了 #[must_use] 註釋,以及一些新的庫穩定性。如果你此前已通過 rustup 安裝了以前的 Rust 版本,執行以下命令即可升級至最新版本:

rustup update stable

具體更新內容包括: 

格式字串中捕獲的識別符號

格式字串現在可以通過在字串中寫入 {ident} 來捕獲引數。格式長期以來接受位置引數(可選地通過索引)和命名引數,例如:

println!("Hello, {}!", get_person());                // implicit position
println!("Hello, {0}!", get_person());               // explicit index
println!("Hello, {person}!", person = get_person()); // named

現在命名引數也可以從周圍的範圍中捕獲,例如:

let person = get_person();
// ...
println!("Hello, {person}!"); // captures the local `person`

這也可以用於格式化引數:

let (width, precision) = get_format();
for (name, score) in get_scores() {
  println!("{name}: {score:width$.precision$}");
}

格式字串只能捕獲普通識別符號,不能捕獲任意路徑或表示式。對於更復雜的引數,要麼先將它們分配給本地名稱,要麼使用舊name = expression樣式的格式化引數。

減少 WindowsCommand搜尋路徑

在 Windows targets 上,std::process::Command 將不再搜尋當前目錄中的可執行檔案。Rust 現在在沒有當前目錄的情況下執行自己的搜尋,並且不包括舊的 16 位目錄,因為沒有 API 來發現它的位置。所以 Windows 上 Rust 的新Command搜尋順序是:

  1. PATH子環境變數中列出的目錄。
  2. 載入應用程式的目錄。
  3. 32 位 Windows 系統目錄。
  4. Windows 目錄。
  5. PATH環境變數中列出的目錄。

Non-Windows targets 繼續使用其特定於平臺的行為,通常只考慮子或父PATH環境變數。

標準庫中更多的#[must_use]

Library  在 2021 年 10 月被批准,以稽核和擴大 #[must_use] 在整個標準庫中的應用,涵蓋更多以返回值為主要作用的 functions。這類似於 function purity 的想法,但比真正的語言特性要寬鬆。其中一些新增功能在

  • 以下以前穩定的功能現在是const

    更多詳情可

    展開閱讀全文