我有一个包含两个大小不同的向量的向量:
let vectors = vec![
vec![0, 1],
vec![2, 3, 4]
];
我想创建一个迭代器来循环遍历每个向量的元素,返回:
0: [0, 2]
1: [1, 3]
2: [0, 4]
3: [1, 2]
...
在这个例子中有两个向量,但是我想把它推广到k个向量。
我已经试过了:
let cycles = vectors
.into_iter()
.map(|x| x.into_iter().cycle());
loop {
let output: Vec<_> = cycles
.map(|x| x.next().unwrap())
.collect();
}
但是,它不起作用,因为x
不能作为可变的借用。
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> src/main.rs:14:22
|
14 | .map(|x| x.next().unwrap())
| - ^^^^^^^^ cannot borrow as mutable
| |
| help: consider changing this to be mutable: `mut x`
我理解这个错误,但是我想不出构建这个迭代器的替代方法。Playground。
2条答案
按热度按时间vlju58qv1#
您必须将迭代器收集到某个数据结构中,如
Vec
。然后,可以使用
iter_mut
迭代可变引用,这使您可以推进收集的迭代器。qzwqbdag2#
你的意思是:
如果是: