#future #async #no-std #green-thread

nightly no-std greenthread-future

基于裸机上的 greenthread 将闭包转换为 futures(no_std + no_alloc)

1 个不稳定版本

0.1.0 2020年2月2日

#1691 in 异步

MIT 许可证

10KB
175

greenthread-future-rs

Actions Status Coverage Status

将闭包转换为基于 greenthread 的 futures(裸机,no_std + no_alloc)。

简单来说,这是 Futurify#![no_std] 版本。

我正在探索将其用于实现裸机线程。

示例

待定。

现在以单元测试为例

#[tokio::test]
async fn test() {
  let h1 = tokio::spawn(ThreadFuture::from(|| {
    println!("1.1");
    yield_now();
    println!("1.2");
    1u32
  }));
  let h2 = tokio::spawn(ThreadFuture::from(|| {
    println!("2.1");
    yield_now();
    println!("2.2");
    2u32
  }));
  println!("join 1 => {}", h1.await.unwrap());
  println!("join 2 => {}", h2.await.unwrap());
}

输出

1.1
2.1
1.2
2.2
join 1 => 1
join 2 => 2

内部

stack-layout

无运行时依赖