Появилось несколько готовых преобразований между типами
30.12.2025Добавляется несколько преобразований, которые раньше писали вручную: из символа в номер, из числа в логическое значение, из массива неинициализированных значений в обёртку и обратно.
Из символа в номер
Беззнаковый целочисленный тип оставался единственным, у которого не было такого преобразования. То есть одинаково верный код писался десятью способами в зависимости от того, какой тип нужен, — приведением в более широкий беззнаковый с промежуточным значением.
Из числа в логическое значение
Ноль и единица — это логические значения, и обратное тоже верно. Но универсальный механизм приведения для этого не годится: ненулевое число может быть любым, а не единицей, и проверка на ненулевость в приведении не выражается.
Готовое преобразование с проверкой работает одинаково для всех целочисленных типов.
Из массива неинициализированных значений
Ручное построение массива, где часть элементов не заполнена, — обычное дело при разборе форматов с необязательными полями. Преобразования, позволяющие собрать массив и обратно без приведения типов вручную, убирают блок небезопасного кода, который иначе приходилось писать и обосновывать.
Оригинал
TryFrom<char> for usize; также rust-lang/rust#147400 и #145504
Упоминаний: 1 · Просмотров: 3