rust 如何使用tap()迭代器?

ds97pgxw  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(80)

Rust中tap()的等价物是什么?
它对迭代器中的每个项调用一个函数,如map(),但不是传递函数返回的值,tap()返回原始项。
例如,我想以某种方式在我的流中间调用println!()

foo.into_iter()
  .filter(|x| x == target)
  .tap(|x| println!("{:?}", x)) // <-- what goes here?
  .map(|c| c.result)

字符串
更正:
tap()在整个迭代器上调用闭包一次
inspect()调用迭代器中每个项的闭包

qco9c6ql

qco9c6ql1#

Iterator上的.inspect()

foo.into_iter()
  .filter(|x| x == target)
  .inspect(|x| println!("{:?}", x))
  .map(|c| c.result)

字符串

eoxn13cs

eoxn13cs2#

你描述的不是tap,而是inspect,正如@kmdreko指出的那样。一个通用的tap(以及一个通用的管道-通用的map,你可以将其签名表示为a -> (a -> b) -> b)由第三方tap库实现。

相关问题