不幸的是,以下情况不起作用:
let vecs: Vec<Vec<i32>> = get_vectors();
let result = vecs
.iter()
.iter()
.do_something()
.do_something_else() // etc
编译错误:
error[E0599]: no method named `iter` found for type`std::slice::Iter<'_, std::vec::Vec<i32>>` in the current scope
--> src/main.rs:49:10
|
49 | .iter()
|
我可以用
来避免它for row in vecs.iter() {
for column in row.iter() {
// do something
}
}
我真的更喜欢.iter()
方法。我怎么能做到这一点?
答案 0 :(得分:5)
使用flatten
:
fn main() {
let v = vec![vec![1, 2], vec![3, 4], vec![5, 6]];
for i in v.iter().flatten() {
println!("{}", i); // 1 2 3 4 5 6
}
}
flatten
将嵌套迭代器转换为一个迭代器。