1 stable release

1.2.18 Jun 17, 2020
1.2.17 Jun 15, 2020
1.2.7 May 31, 2020
1.1.13 Apr 30, 2020

#417 in Asynchronous

Download history 87/week @ 2020-11-08 7/week @ 2020-11-15 1/week @ 2020-11-22 4/week @ 2020-11-29 1/week @ 2020-12-06 1/week @ 2020-12-13 1/week @ 2020-12-27 77/week @ 2021-01-03 77/week @ 2021-01-17 1/week @ 2021-01-31 76/week @ 2021-02-07 1043/week @ 2021-02-14

343 downloads per month

GPL-3.0+

39KB
921 lines

lelet

A golang like task executor

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.

Installation

With cargo add installed run:

$ cargo add lelet

Example

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));
}

Dependencies

~790KB
~13K SLoC