Метод fill_with
Метод fill_with заполняет весь изменяемый срез
значениями, которые возвращает переданное замыкание.
Параметром метод принимает замыкание, которое вызывается
для каждого элемента среза и возвращает новое значение
для этого элемента. Метод ничего не возвращает, а изменяет
исходный срез на месте.
Синтаксис
slice.fill_with(|| value)
Пример
Давайте заполним срез vec![0, 0, 0, 0, 0]
одним и тем же значением 7, используя замыкание:
fn main()
{
let mut res = vec![0, 0, 0, 0, 0];
res.fill_with(|| 7);
println!("{:?}", res);
}
Результат выполнения кода:
[7, 7, 7, 7, 7]
Пример
Давайте заполним срез vec![0, 0, 0, 0, 0]
значениями, которые зависят от внешнего счётчика:
fn main()
{
let mut counter = 1;
let mut res = vec![0, 0, 0, 0, 0];
res.fill_with(|| {
let value = counter;
counter += 1;
value
});
println!("{:?}", res);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте заполним срез строк vec![""; 5]
новыми строками:
fn main()
{
let mut res = vec![""; 5];
res.fill_with(|| "abcde");
println!("{:?}", res);
}
Результат выполнения кода:
["abcde", "abcde", "abcde", "abcde", "abcde"]