[dependencies]
executor = "0.6"
-
#![no_std]
+alloc
- global executor for easy spawning
- simple enough to learn from! (~ 100 lines)
- simple macros for async entry functions
A web assembly example
#[no_mangle]
#[executor::entry]
pub fn main() {
console_log("Hello");
set_timeout(1000).await;
console_log("World!");
}
fn set_timeout(milliseconds:u32) -> TimeoutFuture {
// create a timeout future and store globally
}
#[no_mangle]
pub fn timeout_complete() -> () {
// find your timeout future and wake it's waker
}
Want to use async-std?
use async_std::task::sleep;
use std::time::Duration;
#[executor::main]
async fn main() {
println!("hello");
sleep(Duration::from_secs(1)).await;
println!("world!");
}
Write your own with this trait
pub trait GlobalExecutor {
fn spawn(&mut self, future: Box<dyn Future<Output = ()> + 'static + Send + Unpin>);
}
executor::set_global_executor(MY_EXECUTOR);
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in executor
by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.