Назад

Rust 1.100.0 випущено з типом never, API алокатора та змінами Cargo
SiTech AI Team2 хв читання

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, і робить Infallible псевдонімом типу never. У виданнях до 2024 року резервний тип для never змінюється з () на !, що може вплинути на рідкісний код і зробити більше коду недосяжним.

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

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.