#minimalist #async-await

无 std executor

一个极简的 async/await 执行器

24 个版本

0.8.4 2022年7月16日
0.8.2 2022年2月27日
0.8.0 2021年3月30日
0.7.0 2020年3月25日
0.5.3 2019年11月15日

#299 in WebAssembly

每月 25 次下载
用于 ockam_node_no_std

MIT/Apache 许可证

12KB
78

executor

docs.rs docs

[dependencies]
executor = "0.8"

特性

  • #![no_std] + alloc
  • 足够简单,可以学习!(~ 100 行)
  • 支持 WebAssembly

WebAssembly

use web::*;

#[no_mangle]
fn main() {
    executor::run(async {
        loop {
            set_inner_html(DOM_BODY, "⏰ tic");
            sleep(1000).await;
            set_inner_html(DOM_BODY, "⏰ tock");
            sleep(1000).await;
        }
    });
}

在这里查看它的工作情况 这里.

命令行界面 (CLI)

如果添加一些东西来防止它过早退出,甚至可以使用 async-std.

use async_std::task::sleep;
use std::time::Duration;

fn main() {
    let complete = std::sync::Arc::new(core::sync::atomic::AtomicBool::new(false));
    let ender = complete.clone();
    executor::run(async move {
        println!("hello");
        sleep(Duration::from_secs(1)).await;
        println!("world!");
        ender.store(true, core::sync::atomic::Ordering::Release);
    });
    while !complete.load(core::sync::atomic::Ordering::Acquire) {}
}

许可证

此项目可在以下任一许可证下使用

任选其一。

贡献

除非您明确说明,否则任何有意提交给 executor 包的,根据 Apache-2.0 许可证定义,将按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~155KB