Появился Vec::from_fn — вектор из вычисленных значений без требования копируемости
07.12.2025У вектора появился конструктор from_fn: он создаёт вектор заданной длины, вычисляя каждое значение замыканием по индексу.
Какое ограничение снимается
Синтаксис создания повторяющихся значений — vec![значение; количество] — требует, чтобы значение можно было копировать. Для чисел и ссылок это выполняется, а вот для вектора внутри вектора или для строки — нет.
Обходной путь был: вычислить значение один раз, положить в массив переменного размера и преобразовать в вектор. Либо заполнить вектор нужной длины и присвоить значения по индексам — с проверкой границ на каждом шаге.
Новый метод
Замыкание вызывается для каждого индекса и возвращает значение любого типа — копируемого или нет. Заполнение происходит сразу, без промежуточных контейнеров и без проверок границ.
Внутри цикла значение можно вычислить из индекса: например, заполнить вектор квадратами чисел или элементами, зависящими от позиции.
Оригинал
implement Vec::from_fn
Упоминаний: 1 · Просмотров: 3