#future #combinator #order #execution #control

ert

A combinator to control future execution order

4 releases

0.2.2 Sep 1, 2020
0.2.1 Jun 29, 2020
0.2.0 Mar 19, 2020
0.1.0 Sep 29, 2019

#1026 in Asynchronous

MIT license

10KB
174 lines

ert

A combinator to control future execution order.

Latest version Documentation License Actions Status

struct Data {
    file: String,
    tag: usize,
    value: usize,
}

#[tokio::main]
async fn main() {
    // Stream of `Data` coming over TCP.
    let f = tcp_stream()
        .map(|d| {
            let tag = d.tag;
            let f = async move {
                let v = read_value_from_file(&d.file).await;
                write_value_to_file(&d.file, v + d.value).await;
            };
            f.via_g(tag)
        })
        .buffer_unordered(100)
        .for_each(|_| async {});

    f.await;
}

order

Dependencies

~4.5MB
~65K SLoC