Появилось несколько готовых преобразований между типами

30.12.2025

Добавляется несколько преобразований, которые раньше писали вручную: из символа в номер, из числа в логическое значение, из массива неинициализированных значений в обёртку и обратно.

Из символа в номер

Беззнаковый целочисленный тип оставался единственным, у которого не было такого преобразования. То есть одинаково верный код писался десятью способами в зависимости от того, какой тип нужен, — приведением в более широкий беззнаковый с промежуточным значением.

Из числа в логическое значение

Ноль и единица — это логические значения, и обратное тоже верно. Но универсальный механизм приведения для этого не годится: ненулевое число может быть любым, а не единицей, и проверка на ненулевость в приведении не выражается.

Готовое преобразование с проверкой работает одинаково для всех целочисленных типов.

Из массива неинициализированных значений

Ручное построение массива, где часть элементов не заполнена, — обычное дело при разборе форматов с необязательными полями. Преобразования, позволяющие собрать массив и обратно без приведения типов вручную, убирают блок небезопасного кода, который иначе приходилось писать и обосновывать.

Оригинал

TryFrom<char> for usize; также rust-lang/rust#147400 и #145504

Упоминаний: 1 · Просмотров: 3