gwasm_dispatcher/
lib.rs

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