# Loaders
A fully-featured, customisable progress bar and loading indicator library for Rust CLI
applications, implemented with only the standard library.
[](https://crates.io/crates/loaders)
[](https://docs.rs/loaders)
[](../../LICENSE)
[](https://github.com/muhammad-fiaz/loaders/actions/workflows/ci.yml)
## Features
- Progress bars with known or unknown totals.
- Spinners with built-in frame presets.
- Multi-progress rendering for concurrent work.
- Iterator integration with automatic length detection.
- Human-readable ETA, elapsed time, and rate values.
- Byte formatting and byte throughput templates.
- Custom templates parsed once and reused.
- Custom template keys for application-specific labels.
- ANSI colors with `NO_COLOR` support.
- Built-in themes for common terminal styles.
- Draw throttling by position delta and redraw rate.
- Hidden draw targets for tests and quiet mode.
- Custom `Write` targets for captures and logs.
- Thread-safe cloned progress bars.
- Background steady ticking for spinners.
- Reusable `ProgressChars` for custom progress bar shapes.
- Status-aware templates with `{status}`, `{remaining}`, `{ratio}`, and compact counts.
- Spinner helpers for success, failure, warning, and informational endings.
- 27 built-in spinner and loading frame presets.
## Install
```bash
cargo add loaders
```
```toml
[dependencies]
loaders = "0.0.0"
```
## Four-Line Progress Bar
```rust
use loaders::ProgressBar;
let pb = ProgressBar::new(100);
pb.inc(50);
pb.finish_with_message("done");
```
## Guides
- [Getting Started](getting-started.md)
- [API Reference](api-reference.md)
- [Progress Bars](progress-bar.md)
- [Spinners](spinners.md)
- [Multi Progress](multi-progress.md)
- [Styling](styling.md)
- [Themes](themes.md)
- [Advanced Usage](advanced.md)
- [Examples](examples.md)