Как сделать однострочный цикл в массиве/векторе в 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();