4 个版本

0.1.1 2020年4月13日
0.1.0 2020年3月25日
0.0.2 2020年3月22日
0.0.1 2020年2月3日

#104 in #alloc

MIT/Apache

6KB
141

executor

docs.rs docs

[dependencies]
executor = "0.9.0"

特性

  • #![no_std] + alloc
  • 简单到足以学习!(~ 200 行)
  • 与WebAssembly兼容

WebAssembly

use web::*;
use executor;

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

在这里查看这个示例的运行效果 这里

命令行界面

甚至可以通过添加一些东西来停止它过早退出,使用 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::add_async(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::update();}
}

许可协议

本项目根据您的选择,采用以下任一许可协议:

贡献

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

依赖

~1.5MB
~35K SLoC