#coroutine #async-await #async-await-yield

nightly monkeys

带有 async/await/yield 的协程

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2016年3月23日

69#coroutine

MIT 许可证

20KB
533 行代码(不包括注释)

Monkeys 是新的协程

这是一个预_alpha 库,目前没有任何功能按预期工作。

目标

Rust 的 async/await/yield 协程。

fn main() {

   async(|flow| {

     let stream = async(|flow| {
        for i in 0..5 {
            flow.yield_it(i);
        }
      });

      for r in stream {
        println!("got streamed: {:?}", r);
      }


      let awaitable = async(|flow | {
        1 + 1
      });

      let r = flow.await(awaitable);

      println!("awaitable res: {:?}", r);


   }).get();
}

打印

> got streamed: 0
> got streamed: 1
> got streamed: 2
> got streamed: 3
> got streamed: 4
> awaitable res: 2

非目标

不会包含网络栈本身。Monkeys 是构建更高级别库的模块。

计划

  • 初始原型
  • 简单的计时器
  • 支持可插拔网络栈
  • 基准测试和优化

依赖项

~400KB