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

## Example:
```rust
#[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](rs_taskflow/tests/full_example_test.rs).
## Usage
### Installation
```bash
git clone https://github.com/mm318/rs_taskflow.git
```
### Build
For development iterations
```bash
# disables use of the macros in rs_taskflow_derive
cargo test --no-default-features -- --nocapture
```
For testing build with more debug messages
```bash
cargo test -- --nocapture
```
For testing release build
```bash
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`).