在 2024 年 6 月 13 日,Rust 團隊又發布 Rust 1.79.0 新版本了,一起來看看該版本到底發生了哪些變化吧。對于喜歡嘗新的伙伴,又可以體驗到更多的創新和改進了。
老規則,如果你渴望嘗試最新版本的 Rust,只需通過 rustup 工具即可輕松升級。老規則,如果你渴望嘗試最新版本的 Rust,只需通過 rustup 工具即可輕松升級。
$ rustup update stable
新的 1.79.0 穩定版中包含了哪些內容呢?
盡管 Rust 1.79. 0 版本在規模上相對較小,但它仍然秉承了Rust 團隊一貫的風格呀,哈哈!即使是細微的更新也能匯聚成顯著的進步。
在 Rust 1.79.0 版本中,內聯 const 表達式被穩定化,內聯 const 表達式允許在表達式位置上使用 const 塊,而無需進行額外的聲明。
這樣的常量代碼更加簡潔和可讀,尤其是在泛型上下文中,以前你可能需要先聲明一個 const 常量,然后再使用它。然而現在你就能直接在需要的地方使用 const 塊來創建常量值。
之前的寫法:
const EMPTY: Option<Vec<u8>> = None;let foo = [EMPTY; 100];
現在可以寫成:
let foo = [const { None }; 100];
需要注意的是,這對于通用上下文也是如此,以前需要使用關聯常量的詳細特征聲明:
fn create_none_array<T, **const** N: usize>() -> [Option<T>; N] { [**const** { None::<T> }; N] }
這種改進也適用于泛型上下文,以前需要使用關聯常量的詳細特征聲明,現在可以直接使用內聯 const 表達式,無需額外聲明,使得代碼更加簡潔性,還增強表達能力,易于閱讀。
在 Rust 1.79 穩定中了關聯項邊界語法,使得能夠將邊界放在其他邊界內的關聯類型位置,即 T: Trait<Assoc: Bounds...>。這樣就避免了僅為了約束關聯類型而提供額外的顯式泛型類型的需要。該功能允許在一些以前不可能或對使用施加了額外的、不必要的限制的地方指定界限,譬如:
where 子句
在這個位置上,相當于將邊界分成兩個(或多個)where 子句。譬如:
where T:Trait<Assoc: Bound>
相當于:
where T: Trait, <T as Trait>::Assoc: Bound
更多的可以閱讀官網文檔獲取。
Rust 1.79.0 穩定版改進了生命周期處理,使得 match 和 if 表達式中的臨時項自動獲得更長的生命周期。
let a = if true { // 假設這是一個臨時值 let temp = create_temp_value(); &temp // 引用臨時值} else { // 引用另一個臨時值 &create_temp_value() };
再來看 match 的構造:
let a = match () { _ => { ..; &temp() }}
現在與之前的行為一致:
let a = { ..; &temp() // lifetime is extended };
此行為是向后兼容的,因為這些程序過去編譯失敗。
當然還有了,還有一些穩定API等等,更多建議多關注官網動態,才能獲取一些實時性信息。
本文鏈接:http://www.tebozhan.com/showinfo-26-96047-0.htmlRust 又發布新的 1.79.0 穩定版本了!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com