Rust 1.80加入了多項提高效率、程式碼安全性和靈活性的功能更新,標準函式庫新增LazyCell和LazyLock延遲初始化型別,並且強化模式(Pattern)比對的靈活性,而Rust套件管理器Cargo現在則會檢查所有已知的cfg名稱和值,並且偵測錯誤配置。

Rust新加入的LazyCell和LazyLock型別簡化延遲初始化的實作,使得程式在需要時才進行計算和資源分配的程式碼,變得更加容易編寫。延遲初始化操作對於需要按需載入資源的情境特別有用,能夠在需要時才分配資源,這將可大幅提高大型應用的啟動速度和執行效率,從資源管理的角度來說,對於需要大量記憶體或是其他系統資源的物件,可以更有效地管理資源,有助於減少程式整體記憶體使用量。

官方現在直接在標準函式庫中加入LazyCell和LazyLock,讓實作延遲初始化功能更簡單,消除需要的樣板程式碼,同時也降低了對外部相依項目的依賴,簡化專案管理工作。

LazyLock與LazyCell的差異在於,LazyLock為執行緒安全,相較於LazyCell只適用於單執行緒環境,LazyLock實作了Sync trait,因此可在多執行緒環境中安全使用,不過也由於LazyLock需要處理執行緒同步,因此會產生額外的效能開銷。

Rust 1.70加入了同樣用於延遲初始化的OnceCell和OnceLock型別,不過LazyCell和LazyLock本身就包含了初始化邏輯,不像是OnceCell、OnceLock需要外部方法來提供初始化邏輯,因此LazyCell和LazyLock在使用上更為簡單,不過當初始化邏輯需要依據執行條件變化,則OnceCell和OnceLock更加靈活。

Rust 1.80透過檢查cfg名稱和值,來強化程式碼的正確性和可靠性。該功能可以偵測和警告開發者可能的cfg名稱或值的拼寫錯誤,避免因為錯誤條件編譯配置所導致的問題,確保開發者只使用已定義和預期的cfg條件,減少意外行為。

由於cfg檢查功能在編譯階段就能發現潛在的配置問題,因此大幅降低在執行時才發現錯誤的風險,提高了整體的程式碼品質和開發效率。

Rust 1.80還引入了一個能夠擴展模式比對範圍的新功能,開發者已可以使用排他範圍(Exclusive Range)語法a..b或..b,其提供類似Range和RangeTo表示式的功能,該表示式在處理連續範圍時更方便,允許範圍之間沒有間格或是重疊,使某些類型的程式碼更清楚且不容易出錯,維持語言的一致性和表達性。

熱門新聞

Advertisement