Как сделать однострочный цикл в массиве/векторе в Rust?

Перешёл с Python на Rust, а на прошлом языке для заполнения массива циклом писалась конструкция на подобии:

array = [i for i in range(100)]

Возможно ли сделать тоже самое в Rust и как?


Ответы (1 шт):

Автор решения: Pak Uula

List comprehension в самом общем виде [f(i) for i in range(100) if cond(i)] - собрать в список результаты выполнения функции f к тем элементам последовательности, которые удовлетворяют предикату cond:

let v: Vec<_> = (0..100).filter(cond).map(f).collect();

Например, вектор квадратов всех нечётных чисел от 1 до 10:

# python
[x*x for x in range(10) if x%2==1]
// Rust
let v: Vec<_> = (0..10).filter(|x| x % 2 == 1).map(|x| x * x).collect();
→ Ссылка