1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#![allow(clippy::needless_doctest_main)]
//! gWASM Runner API for RUST.
//!
//! ## Examples
//!
//! ```edition2018
//! use gwasm_dispatcher::{dispatcher, SplitContext};
//!
//! fn main() {
//!     dispatcher::run(
//!         move |_: &mut dyn SplitContext| {
//!             const NUM_SUBTASKS: usize = 10;
//!             let arr: Vec<u64> = (1..=100).collect();
//!             arr.chunks(NUM_SUBTASKS)
//!                 .map(|x| (x.to_vec(),))
//!                 .collect::<Vec<_>>()
//!         },
//!         |task: Vec<u64>| (task.into_iter().sum(),),
//!         |_: &Vec<String>, results: Vec<(_, _)>| {
//!             let given: u64 = results.iter().map(|(_, (result,))| result).sum();
//!             let expected: u64 = (1..=100).sum();
//!             assert_eq!(expected, given, "sums should be equal")
//!         },
//!     )
//!         .unwrap()
//! }
//! ```
//!
//!
pub mod dispatcher;

pub use crate::blob::{Blob, Output};
pub use crate::dispatcher::TaskResult;
pub use crate::splitter::SplitContext;

mod blob;
mod error;
mod taskdef;

mod executor;
mod merger;
mod splitter;

pub use taskdef::{TaskArg, TaskDef};