异步特性可以直接由手动的 Future 实现来支持

主要观点:在特质(AFITs)中编写异步函数时,多数人不知可直接从方法返回期货,通过示例展示了相关内容。
关键信息

  • 介绍了可直接返回期货的AsyncIterator特质及其简单实现。
  • 探讨了用手动期货实现天真地支持 AFITs 存在的问题,如中间的.await调用可能导致性能问题。
  • 说明可直接用手动期货实现支持 AFITs 以避免中间.await调用,满足手动控制需求。
  • 提及future::poll_fn可创建无状态期货,方便编写优化的内联轮询状态机代码。
    重要细节
  • AsyncIterator特质中,async fn next可改为fn next() -> impl Future直接返回期货。
  • poll_fn允许通过FnMut闭包引用外部状态,重写手动期货实现。
  • 指出 AFITs 既方便实现又能通过手动轮询状态机实现所需控制,统一了异步特质的设计空间。
  • 强调在不同异步特质中,不同层次的抽象都很重要,不应片面选择。
  • 感谢 Oli Scherer 去年的交流,使其有信心做出相关论断。
阅读 10
0 条评论