Rust 1.46 編程語言發布

發表 系統程式語言 1.46 版 ,由 Mozilla 專案創建。 該語言專注於記憶體安全,提供自動記憶體管理,並提供在不使用垃圾收集器和 運行.

Rust 的自動記憶體管理消除了操作指標時的錯誤,並防止低階記憶體操作引起的問題,例如在釋放記憶體區域後存取它、空指標取消引用、緩衝區溢位等。 正在開發一個套件管理器來分發庫、確保組裝並管理專案的依賴關係。 貨物,讓您一鍵取得程式所需的庫。 支援儲存庫來託管庫 箱子.

主要的 創新:

  • 使用表達式“const fn”定義的函數的功能得到了擴展,不僅可以作為常規函數調用,還可以在任何上下文中代替常數使用。 這些函數是在編譯時計算的,而不是在執行時間計算的,因此它們受到某些限制,例如只能讀取常數的能力。

    新版本取消了在此類函數中使用布林運算子(“&&”和“||”)的禁令,並允許使用“if”、“if let”、“match”結構,
    “while”、“while let”和“loop”,並且還提供了使用表達式“&[T]”轉換為切片(切片、動態數組)的能力。 在「const fn」函數中使用這些功能可讓您將一些資源密集作業移至編譯階段。 例如,「const-sha1」的實現使得在編譯時計算 SHA-1 雜湊成為可能,這使得 Rust 的 WinRT 綁定速度提高了近 40 倍。

  • 為了使錯誤訊息提供更多信息,對「#[track_caller]」屬性的支援已經穩定,這對於像 unwrap 這樣的函數很有用,如果類型使用不正確,可能會導致恐慌。 恐慌處理程序將使用指定的屬性在錯誤訊息中列印呼叫者的位置。
  • std::mem::forget 方法中使用了「const」屬性,它決定了在任何上下文中使用它而不是常數的可能性。
  • API 的新部分已移至穩定類別,包括穩定的 Option::zip 和 vec::Drain::as_slice。
  • 在套件管理器 Cargo 中 添加 支援編譯包時設定的新環境變數:CARGO_BIN_NAME(產生的執行檔的名稱)、CARGO_CRATE_NAME(套件名稱)、CARGO_PKG_LICENSE(清單中指定的授權)、CARGO_PKG_LICENSE_FILE(許可證檔案的路徑)。

來源: opennet.ru

添加評論