parsli 0.0.3

Parallel status lines for Rust
Documentation
use std::collections::HashMap;
use std::thread::sleep;
use std::time::Duration;
use parsli::{Line, LineStatus, Pool, Task};

/// This is a minimal example on how to use parsli
fn main() {
    let mut pool = Pool::new(4);
    let dummy: Task<String> = Task::new(|name: String, _state: HashMap<String, String>, line: Line| {
        line.update_message(LineStatus::Busy, "Preparing...".to_string());
        sleep(Duration::from_millis(1000 + 10 * (rand::random::<u8>() as u64)));
        if name != "llvm.fetch".to_string() {
            Ok("This is the state result".to_string())
        }
        else {
            Err("This task went terribly wrong".to_string())
        }
    });
    pool.add_task("llvm.fetch", dummy.clone(), vec![]);
    pool.add_task("clang.configure", dummy.clone(), vec!["llvm.fetch"]);
    pool.add_task("compiler-rt.configure", dummy.clone(), vec!["llvm.fetch"]);
    pool.add_task("clang.compile", dummy.clone(), vec!["clang.configure"]);
    pool.add_task("compiler-rt.compile", dummy.clone(), vec!["compiler-rt.configure"]);
    pool.add_task("clang.install", dummy.clone(), vec!["clang.compile"]);
    pool.add_task("compiler-rt.install", dummy, vec!["compiler-rt.compile"]);
    // pool.start_multi(vec!["clang.install", "clang.configure", "compiler-rt.configure"]);
    pool.start();
}