Появился Vec::from_fn — вектор из вычисленных значений без требования копируемости

07.12.2025

У вектора появился конструктор from_fn: он создаёт вектор заданной длины, вычисляя каждое значение замыканием по индексу.

Какое ограничение снимается

Синтаксис создания повторяющихся значений — vec![значение; количество] — требует, чтобы значение можно было копировать. Для чисел и ссылок это выполняется, а вот для вектора внутри вектора или для строки — нет.

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

Новый метод

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

Внутри цикла значение можно вычислить из индекса: например, заполнить вектор квадратами чисел или элементами, зависящими от позиции.

Оригинал

implement Vec::from_fn

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