如何将两个Rust向量交织到一个新向量中?

时间:2019-12-10 13:01:38

标签: vector rust iterator traits itertools

我需要一种惯用的方式来交织这两个向量:

v1 = vec![1.0, 2.0, 3.0];
v2 = vec![4.0, 5.0, 6.0];

我期望的输出是:

v3 is [1.0, 4.0, 2.0, 5.0, 3.0, 6.0];

我尝试使用itertool的interlace函数,但是无法将迭代器收集为Vec类型。可能我用错了它们。

1 个答案:

答案 0 :(得分:7)

使用interleave()板条箱中的interleave()函数或Itertools方法:

use itertools::{interleave, Itertools};

fn main() {
    let v1 = vec![1.0, 2.0, 3.0];
    let v2 = vec![4.0, 5.0, 6.0];
    let v = interleave(v1, v2).collect::<Vec<_>>();
    dbg!(v);

    let v1 = vec![1.0, 2.0, 3.0];
    let v2 = vec![4.0, 5.0, 6.0];
    let v = v1
        .into_iter()
        .interleave(v2.into_iter())
        .collect::<Vec<_>>();
    dbg!(v);
}