Rust 的自動記憶體管理使開發人員免於指標操作,並防止低階記憶體操作所造成的問題,例如釋放後記憶體存取、空指標取消引用、緩衝區溢位等。 正在開發一個套件管理器來分發庫、確保組裝並管理專案的依賴關係。
主要的
- Cargo 套件管理器新增了工具來處理可與 crates.io 公共註冊表共存的替代套件註冊表。 例如,專有應用程式的開發人員現在可以使用自己的私有註冊表(在Cargo.toml 中列出依賴項時可以使用該註冊表),並為其產品應用類似於crates.io 的版本控制模型,以及將依賴項引用到兩個 crate。io 並儲存到您自己的註冊表中。
將外部登錄檔新增至 .cargo/config (位於 $HOME 或套件目錄)
假如 “[registries]”部分,並且要使用外部註冊表,“registry”選項會出現在 Cargo.toml 中每個依賴項的描述中。要連接到其他註冊表,只需將身份驗證令牌放入 ~/.cargo/credentials 檔案中並執行命令
“cargo login --registry=my-registry”並發布包 -
「貨物發布-registry=my-registry」; - 新增了對使用“?”運算符的完全支援。在測試中
文檔測試 ,允許您使用文件中的範例程式碼作為測試。以前的操作員
“?” 只有當存在「fn main()」函數或「#[test]」函數時,才可用於處理測試執行期間的錯誤; - 在使用過程巨集定義的自訂屬性中
假如 使用任意標記集的能力(“#[attr($tokens)]”、“#[attr[$tokens]] 和 #[attr{$tokens}]”)。以前,元素只能使用字串文字以樹/遞歸形式指定,例如“#[foo(bar, baz(quux, foo = “bar”))]”,但現在可以使用枚舉 (' #[range( 0. .10)]') 和類似「#[bound(T: MyTrait)]」的結構; - 穩定類型(性狀)
嘗試從 и嘗試 ,允許進行類型轉換並進行錯誤處理。例如,像 from_be_bytes 這樣的整數類型的方法使用陣列作為輸入,但資料通常是 Slice 類型,並且手動在陣列和切片之間進行轉換是有問題的。透過新特徵,可以透過呼叫 .try_into() 即時執行指定操作,例如「let num = u32::from_be_bytes(slice.try_into()?)」。對於始終成功的轉換(例如,從類型 u8 到 u32),新增了錯誤類型無過失 ,允許透明使用
TryFrom 用於「From」的所有現有實作; - 函數已被棄用
CommandExt::before_exec ,它允許在運行 exec 之前執行處理程序,該處理程序在 fork() 呼叫後分叉的子進程的上下文中執行。在這種情況下,父進程的某些資源(例如檔案描述符和映射的記憶體區域)可能會重複,這可能會導致未定義的行為和庫的錯誤操作。
建議使用不安全函數取代before_execCommandExt::pre_exec . - 穩定的有符號和無符號原子整數類型,大小範圍為 8 到 64 位元(例如,
原子U8 ),以及有符號類型非零 [8|16|32|64|128]. - API 的新部分已移至穩定類別,包括 Any::type_id、Error::type_id、slice::sort_by_cached_key、str::escape_*、str::split_ascii_whitespace、Instant::checked_[add|sub ] 和SystemTime 方法已穩定::checked_[add|sub]。 iter::from_fn 和 iter::successors 函數已經穩定;
- 對於所有整數類型,實作了checked_pow、saturating_pow、wrapping_pow和overflowing_pow方法;
- 新增了透過指定「-C linker-plugin-lto」建置選項在連結階段啟用最佳化的功能。
來源: opennet.ru