loaders 0.0.0

A fully-featured, customisable progress bar and loading indicator library for Rust CLI and terminal applications
Documentation
# Multi Progress

`MultiProgress` owns a single renderer and stores bars in draw order. Child bars are
updated through their normal `ProgressBar` handles, and `join` refreshes the block until
every bar is finished or abandoned.

## Thread Safety

`ProgressBar` and `MultiProgress` use `Arc<Mutex<_>>` internally. Cloning either handle
shares the same state, which makes them suitable for worker threads.

```rust
use loaders::{MultiProgress, ProgressBar};
use std::thread;

let multi = MultiProgress::new();
let pb = multi.add(ProgressBar::new(10));
let handle = thread::spawn(move || {
    for _ in 0..10 {
        pb.inc(1);
    }
    pb.finish();
});
multi.join();
let _ = handle.join();
```

## Ordering

Use `add` to append, `insert` for an index, `insert_before` and `insert_after` for relative
placement, and `remove` when a bar should leave the block.

## Messages Above the Block

`multi.println("message")` prints without corrupting the progress area. It is useful for
phase names, warnings, and completed file names.

## Best Practices

Create the `MultiProgress` on the main thread, add bars before spawning workers, clone or
move each returned `ProgressBar` into the worker, and call `join` from the thread that owns
the terminal.