1 unstable release

0.1.0 Apr 4, 2023

#948 in Concurrency

MPL-2.0 license

31KB
749 lines

rs_taskflow

Attempt at recreating https://github.com/cpp-taskflow/cpp-taskflow in Rust.

build

Example:

#[derive_task((i32,), (i32,))]
struct FlowTask;

let mut flow = Flow::new();

let a = flow.new_task(FlowTask::new(|x: &i32| *x + 1));
let b = flow.new_task(FlowTask::new(|x: &i32| *x - 2));
let c = flow.new_task(FlowTask::new(|x: &i32| *x + 3));

flow.connect_output0_to_input0(&a, &b);
flow.connect_output0_to_input0(&b, &c);

let flow_exec = flow.execute().await;
let result = flow_exec.get_output_0(&c);

For a more complete example, see full_example_test.rs.

Usage

Installation

git clone https://github.com/mm318/rs_taskflow.git

Build

For development iterations

# disables use of the macros in rs_taskflow_derive
cargo test --no-default-features -- --nocapture

For testing build with more debug messages

cargo test -- --nocapture

For testing release build

cargo test --release -- --nocapture

Requirements

Developed using Ubuntu 20.04 and Rust 1.64.
Tested nightly using ubuntu-latest and latest stable Rust (as fetched by actions-rs/toolchain@v1).

Dependencies

~2.3–4MB
~66K SLoC