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};