昨天我们了解了Pin
的用法和它的作用
今天接着往下学
Stream
这个trait
和Future
有些像,但是它可以让步(yield
)更多的值,在编译前。
这一点又和Iterator
挺像的。
一般使用Stream
的场景是channel
的Receiver
也就是接收器(不要忘了前提是future
,也就是异步场景),我们day2
写的例子用的是循环来实现的, 现在我们可以用迭代来实现,这样从性能/优雅度来说是比循环高的。
来看个例子
Iteration
)和并发(Concurrency
)和同步的Iterator
类似,Stream
可以有很多方法可以迭代和修改数据,比如map、filter、fold
等。
当然,还有它们的表兄弟try_map、try_filter、try_fold
,会在错误时退出。
不过for
循环并不能用于Stream
中,你可以用while let
搭配next/try_next
来实现循环。
来看个使用例子
不过这么做就意味着和并发无关了,毕竟异步就是用来缓解并发的,如果不能用于并发就有些搞笑了。。
所以我们用for_each_concurrent
和try_for_each_concurrent
来替代上面的循环或者同步的方法。
这章内容好水,估计是还没完善的。