parsli is an opiniated Rust library to visualize the execution of dependent tasks. It is designed to be as flexible as possible, while abstracting away the management of dependencies and command-line visualization.
Everything is managed through the ThreadPool
struct, which takes care of dependencies and status lines.
```rust use parsli::ThreadPool;
// Execute 4 tasks in parallel let mut pool = ThreadPool::new(4); ```
A task has a name, dependencies and some function it has to execute.
This function takes three arguments
- line
: The status line of this thread that can be controlled.
- name
: The name of this task.
- ctx
: A hashmap with results of the tasks this one depends oni.
This is a basic example on how to instantiate a task.
```rust use std::thread::sleep; use std::time::Duration; use parsli::{Task, Line, Ctx};
let mytask = Task::new(|line: Line, name: String, ctx: Ctx
Tasks can be added to the pool with the ThreadPool::add_task
function.
rust
pool.add_task("mytask", vec![], mytask);
When all tasks have been added to the pool, it can be started with ThreadPool::start
.
rust
pool.start();
```rust use std::thread::sleep; use std::time::Duration; use parsli::{Ctx, Line, ThreadPool, Task};
/// This is a minimal example on how to use parsli
fn main() {
let mut pool = ThreadPool::new(4);
let dummy = Task::new(|line: Line, name: String, ctx: Ctx