Rust in Everything
基于 async-stream 0.3.6

导读

开始读源码之前,先把两件事讲清楚:

  1. 怎么读这一卷:为什么是 0.3.6,tag 之后还没发布的四个提交;两个 crate 一共七百多行,各管什么;主线的宏展开和运行时两段各落在哪个函数上,用一段带打印的程序走一遍;阅读路线和前置知识。
  2. 为什么需要它:手写 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 提前执行"]

💬 关联讨论

发起讨论
加载中...