导读
开始读源码之前,先把两件事讲清楚:
- 怎么读这一卷:为什么是 0.3.6,tag 之后还没发布的四个提交;两个 crate 一共七百多行,各管什么;主线的宏展开和运行时两段各落在哪个函数上,用一段带打印的程序走一遍;阅读路线和前置知识。
- 为什么需要它:手写
Stream要自己写状态机;同一个流用stream!、futures::stream::unfold、「mpsc+spawn+ReceiverStream」三种写法写出来,实测前两种在消费者 poll 时才干活,第三种在另一个任务里提前跑、跑到通道满为止。
flowchart TB read[怎么读这一卷] --> ver["版本:0.3.6 与 tag 之后"] read --> crates["两个 crate 的分工"] read --> lines["主线:宏展开 + 运行时"] why[为什么需要它] --> hand["手写 Stream 的状态机"] why --> three["三种写法对比"] why --> lazy["惰性执行 vs 提前执行"]
💬 关联讨论
发起讨论加载中...