gpt4 book ai didi

rust - 如何让迭代器链执行for_each()并返回一个计数?

转载 作者:行者123 更新时间:2023-12-03 11:43:55 28 4
gpt4 key购买 nike

我有一个长的迭代器链,该链生成的数据通过for_each插入到固定数组中。 MWE版本(playground):

fn f(xs: impl Iterator<Item = u8>) {
let mut buf = [0u8; 32];
xs.zip(buf.iter_mut()).for_each(|(v, b)| *b = v);
// ... process buf
}
我想计算插入了多少个值。在 mut中更新的 for_each变量是一种可能,但我想看看是否可以避免 mut。尝试了以下内容:
fn g(xs: impl Iterator<Item = u8>) {
let mut buf = [0u8; 32];
let c = xs.zip(buf.iter_mut()).inspect(|(v, b)| *b = v).count();
// ... process buf
}
但这不起作用,因为我无法在 b内修改 inspect
迭代器链有没有办法进行数组分配并返回计数?

最佳答案

在这种情况下,您可以简单地将inspect替换为map:

fn g(xs: impl Iterator<Item = u8>) {
let mut buf = [0u8; 32];
let c = xs.zip(buf.iter_mut()).map(|(v, b)| *b = v).count();
// ... process buf
}
map()将产生 ()的迭代器(因为赋值返回),但是您只是在计数,因此实际值是什么都没有关系。

关于rust - 如何让迭代器链执行for_each()并返回一个计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66180159/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com