
Rust 1.100.0 випущено з типом never, API алокатора та змінами Cargo
Rust 1.100.0 доступний через rustup update stable і стабілізує тип never, частини API алокатора, DropGuard, попередження Cargo про невикористані залежності та перевірки мінімального віку публікації.
Rust 1.100.0 тепер доступний через rustup update stable. Випуск стабілізує тип never, частини core API алокатора, core::mem::DropGuard, core::mem::conjure_zst та кілька можливостей Cargo, зокрема звітування про невикористані залежності, зміни компонування каталогу збирання й перевірки мінімального віку публікації.
Тип never стає стабільним
Після 10 років і п'яти невдалих спроб стабілізації тип never, що записується як !, став стабільним. Це канонічний ненаселений тип для обчислень, що розходяться, і його можна привести до будь-якого іншого типу. Цей випуск також дозволяє називати ! будь-де, зокрема Result
API алокатора і DropGuard
Rust 1.100.0 стабілізує основні частини allocator_api, дозволяючи власні алокатори через трейт Allocator з Vec і Box. Випуск також додає core::mem::DropGuard, який виконує замикання під час знищення і підтримує dismiss, щоб повернути охоронювану змінну без виклику деструктора. core::mem::conjure_zst надає окремий небезпечний спосіб створювати значення типів нульового розміру.
Покращення Cargo
Cargo тепер повідомляє про невикористані залежності, що керується таблицею [lints.cargo], причому попередження з'являються, коли зібрано всі можливі цілі збирання. Для невикористаних dev-dependencies попередження не показується. Каталог збирання тепер послідовно застосовує хеш конфігурації збирання, організовуючи каталоги навколо кроків збирання і переносячи хеш у батьківський каталог. Cargo також стабілізує розв'язання мінімального віку публікації, дозволяючи користувачам задавати global-min-publish-age у .cargo/config.toml і пропускати версії, опубліковані нещодавніше за налаштований вік. cargo install ігнорує це налаштування і для встановлюваного крейту, і для його залежностей.
Стабілізовані API та інші зміни
Випуск додає багато стабілізованих API, зокрема Box::new_in, Vec::new_in, Child::main_thread_handle, bool::toggle, Box::take, Box::map, Rc::map, Arc::map, допоміжні функції обрізання для str і slice, Path::trim_prefix, Vec::from_fn та інші, перелічені в нотатках до випуску. Зміни в Rust, Cargo і Clippy задокументовані окремо, а команда Rust подякувала учасникам.
Джерела: blog.rust-lang.org
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.