Rust 官方于 2026 年 5 月 28 日正式發(fā)布 Rust 1.96.0,帶來了多項(xiàng)值得關(guān)注的新特性和安全修復(fù)。
![]()
新 Range 類型:可 Copy 的區(qū)間抽象
本次更新最引人注目的新特性是新的 Range 類型系列。與以往不同,這些新類型實(shí)現(xiàn)的是 IntoIterator 而非 Iterator,且支持 Copy trait。具體新增的類型包括 core::range::Range、core::range::RangeFrom、core::range::RangeInclusive 及其對應(yīng)的迭代器。
這一設(shè)計的核心價值在于:開發(fā)者現(xiàn)在可以將 slice 訪問器存儲在支持 Copy 的類型中,而無需像以前那樣分別存儲 start 和 end 兩個字段。一個典型的應(yīng)用場景是用于實(shí)現(xiàn)代碼位置的區(qū)間抽象。段代碼展示了如何利用新的 Copy Range 類型封裝一個位置區(qū)間,整個結(jié)構(gòu)體可以安全地復(fù)制而不會出現(xiàn)引用語義上的困擾。
斷言匹配宏:更便捷的模式驗(yàn)證
assert_matches! 和 debug_assert_matches! 兩個宏在經(jīng)過多個測試周期后正式穩(wěn)定化。這兩個宏用于檢查某個值是否匹配給定的模式,在測試和協(xié)議驗(yàn)證場景中非常有用。由于這兩個宏需要手動從 core 或 std 導(dǎo)入,Rust 團(tuán)隊(duì)選擇這樣的設(shè)計是為了避免與第三方 crate 可能存在的命名沖突。
WebAssembly 目標(biāo)鏈接行為變更
對于 WebAssembly 目標(biāo)平臺,Rust 1.96.0 不再默認(rèn)向鏈接器傳遞 --allow-undefined 參數(shù)。這意味著如果代碼中存在未定義的符號,鏈接器將直接報錯而非默認(rèn)忽略。如果開發(fā)者需要恢復(fù)舊的行為,可以通過 RUSTFLAGS=-Clink-arg=--allow-undefined 來手動啟用。
兩個 Cargo 安全修復(fù)
本版本還包含兩個 Cargo 安全公告,均已在 crates.io 上完成修復(fù),對普通用戶不產(chǎn)生影響:CVE-2026-5223(中等嚴(yán)重性)涉及 tarball 解壓過程中符號鏈接的處理問題;CVE-2026-5222(低嚴(yán)重性)則涉及 URL 規(guī)范化中的身份驗(yàn)證相關(guān)問題。建議所有使用 Cargo 的開發(fā)者通過 rustup update stable 盡快完成升級。
參考來源:https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/[1]
References
- https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/: https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.