Итерация нескольких векторов по очереди (Rust)
let fruits = vec!["apple", "banana", "orange"];
let cities = vec!["moscow", "berlin", "paris"];
let colors = vec!["red", "green", "blue"];
Как реализовать итерацию в таком порядке?
> apple
> moscow
> red
> banana
> berlin
> green
Как реализовать такую итерацию с произвольным количеством итерируемых объектов произвольной длины?
Ответы (1 шт):
Автор решения: NEStenerus nester
→ Ссылка
1. itertools::izip
cargo.toml
[dependencies]
itertools = "0.10"
main.rs
use itertools::izip;
fn main() {
let fruits = vec!["apple", "banana", "orange"];
let cities = vec!["moscow", "berlin", "paris"];
let colors = vec!["red", "green", "blue"];
for (fruit, city, color) in izip!(fruits, cities, colors) {
println!("{fruit}\n{city}\n{color}");
}
}
2. итерирование через индекс:
let fruits = vec!["apple", "banana", "orange"];
let cities = vec!["moscow", "berlin", "paris"];
let colors = vec!["red", "green", "blue"];
for i in 0..colors.len() {
println!(
"{}\n{}\n{}\n",
fruits.get(i).unwrap_or(&""), // На случай, если длины
cities.get(i).unwrap_or(&""), // итерируемых объектов
colors.get(i).unwrap_or(&"") // не совпадают.
);
}