rust 如何分块清空向量?

bq3bfh9z  于 2022-12-26  发布在  其他
关注(0)|答案(1)|浏览(125)

我想要的是:

fn drain_in_chunks<T>(mut v: Vec<T> {
for chunk in v.drain.chunks(2){
                do_something(chunk)}
}

我在每次迭代中,从v中,移除大小为2的块,我这么做的原因是,因为我想把块移到一个函数中,然而,我不能在不移除元素的情况下,从向量中移走元素。
我可以这样做,但感觉太冗长了。

for (i, chunk) in v.chunks(2).enumerate().zip(0..) {
    v.drain(i*2..(i+1)*2);
    do_something(chunk)
}

还有更好的解决办法吗

rslzwgfq

rslzwgfq1#

您可以使用itertoolstuples()

use itertools::Itertools;

fn drain_in_chunks<T>(mut v: Vec<T>) {
    for (a, b) in v.drain(..).tuples() {
        do_something([a, b]);
    }
}

相关问题