如何在功能样式中迭代2D矢量?

Yee*_*Yee 1 iterator loops functional-programming vector rust

不幸的是,以下内容不起作用:

let vecs: Vec<Vec<i32>> = get_vectors();

let result = vecs
    .iter()
    .iter()
    .do_something()
    .do_something_else() // etc
Run Code Online (Sandbox Code Playgroud)

编译错误:

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()
   | 
Run Code Online (Sandbox Code Playgroud)

我可以避免它

for row in vecs.iter() {
    for column in row.iter() {
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

我真的更喜欢这种.iter()方法.我怎么能实现这一目标?

Fre*_*ios 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
    }
}
Run Code Online (Sandbox Code Playgroud)

flatten 将嵌套迭代器转换为一个迭代器.