batch-processing 0.1.17

A batch library for processing a list of items in parallel
Documentation
#[cfg(test)]
mod simple_step_test {
    use std::sync::{Arc, Mutex};
    use batch_processing::sync::step::{Runner, simple_step};
    use batch_processing::sync::step::simple_step::SimpleStepBuilderTrait;
    use batch_processing::sync::step::step_builder::StepBuilderTrait;

    #[test]
    fn test_simple_step() {
        let test: Arc<Mutex<Vec<i64>>> = Arc::new(Mutex::new(Vec::new()));
        let test_clone = test.clone();
        let tasklet1 = move || {
            let mut test = test_clone.lock().unwrap();
            println!("Step 1: {:?}", test);
            test.push(1);
        };

        let step1 = simple_step::get("step".to_string())
            .throw_tolerant()
            .tasklet(Box::new(tasklet1)).build();

        let test_clone = test.clone();

        let tasklet2 = move || {
            let mut test = test_clone.lock().unwrap();
            println!("Step 2: {:?}", test);
            test.push(2);
        };

        let step2 = simple_step::get("step".to_string())
            .throw_tolerant()
            .tasklet(Box::new(tasklet2))
            .build();

        step1.run().status.expect("Failed to run step 1");

        assert_eq!(test.lock().unwrap().len(), 1);

        step2.run().status.expect("Failed to run step 2");

        assert_eq!(test.lock().unwrap().len(), 2);
    }
}