坏蛋Dan
知乎@坏蛋Dan
发布时间:2024.1.4

前言

昨天我们了解了Pin的用法和它的作用

坏蛋Dan:rust基础学习--异步day4

今天接着往下学


Stream trait

Stream这个traitFuture有些像,但是它可以让步(yield)更多的值,在编译前。

这一点又和Iterator挺像的。

一般使用Stream的场景是channelReceiver也就是接收器(不要忘了前提是future,也就是异步场景),我们day2写的例子用的是循环来实现的, 现在我们可以用迭代来实现,这样从性能/优雅度来说是比循环高的。

来看个例子

迭代(Iteration)和并发(Concurrency)

和同步的Iterator类似,Stream可以有很多方法可以迭代和修改数据,比如map、filter、fold等。

当然,还有它们的表兄弟try_map、try_filter、try_fold,会在错误时退出。

不过for循环并不能用于Stream中,你可以用while let搭配next/try_next来实现循环。

来看个使用例子

不过这么做就意味着和并发无关了,毕竟异步就是用来缓解并发的,如果不能用于并发就有些搞笑了。。

所以我们用for_each_concurrenttry_for_each_concurrent来替代上面的循环或者同步的方法。


总结

这章内容好水,估计是还没完善的。