loaders 0.0.0

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

`loaders` gives you three main building blocks: `ProgressBar` for measured work,
`Spinner` for indeterminate work, and `MultiProgress` for several bars rendered as one
terminal block.

## Add the Dependency

```toml
[dependencies]
loaders = "0.0.0"
```

## First Progress Bar

```rust
use loaders::ProgressBar;

fn main() {
    let pb = ProgressBar::new(3);
    for _ in 0..3 {
        pb.inc(1);
    }
    pb.finish_with_message("done");
}
```

## First Spinner

```rust
use loaders::{Spinner, spinner::frames::DOTS};
use std::time::Duration;

fn main() {
    let spinner = Spinner::new_with_interval(&DOTS, Duration::from_millis(80));
    spinner.start_with_message("connecting");
    spinner.stop_with_message("connected");
}
```

## Iterator Usage

```rust
use loaders::ProgressIterator;

fn main() {
    let sum: u64 = (0..100u64).progress().sum();
    println!("{sum}");
}
```

## Which Type Should I Use?

Use `ProgressBar` when there is a count, byte total, or step count. Use `Spinner`
when work is happening but a total is unknown. Use `MultiProgress` when multiple
threads or phases should be visible together.

## Draw Targets and Hidden Bars

Progress output defaults to stderr. `DrawTarget::hidden()` suppresses terminal output and
is the recommended target in tests. Non-TTY streams receive newline snapshots instead of
ANSI cursor movement, which keeps pipes and logs readable. CI and `NO_COLOR` environments
avoid color escape sequences.