lelet

A golang like task executor


Crates.io version Download docs.rs docs

Lelet executor

Task executor that inspired by golang runtime.

The executor is running in thread pool, and when it detect blocking call inside a task, it will automatically scale the thread pool.

Because of this feature, it is always safe for you to do blocking operation in a task, you don't need to worry about blocking the entire executor thread.

And like go in golang, spawn does not return task handle, if you need synchronization, you can use [futures-channel] or [std channel]

Installation

With cargo add installed run:

sh $ cargo add lelet

Example

```rust use std::thread; use std::time::Duration;

use futures_timer::Delay;

fn main() { lelet::spawn(async { for _ in 0..10 { Delay::new(Duration::from_secs(1)).await; println!("Non-blocking Hello World"); } });

lelet::spawn(async {
    for _ in 0..10 {
        thread::sleep(Duration::from_secs(1));
        println!("Blocking Hello World");
    }
});

thread::sleep(Duration::from_secs(11));

} ```