[![Rust](https://github.com/disco07/rpb/actions/workflows/rust.yml/badge.svg?branch=main)](https://github.com/disco07/rpb/actions/workflows/rust.yml) [![Crates.io](https://img.shields.io/crates/v/rpb.svg)](https://crates.io/crates/rpb) [![Documentation](https://docs.rs/rpb/badge.svg)](https://docs.rs/rpb/) # rpb A simple progress bar for Rust 🦀 projects. I created that because there was a long processes in some project and I didn't know what was the progression. ## Installation Add from command line. ``` cargo add rpb@0.1.5 ``` Or add this to your Cargo.toml file. ``` [dependencies] rpb = "0.1.5" # Or add from github main branch. rpb = { git = "https://github.com/disco07/rpb.git", branch = "main" } ``` ## Usage ### Basic usage ```rust fn main() { use rpb::bar::Bar; use std::thread::sleep; use std::time; let mut bar = Bar::new(200); for _i in 0..200 { bar.add(1); sleep(time::Duration::from_millis(50)) } } ``` ![Basic bar](images/basic.gif) [examples/custom.rs](examples/custom.rs) ![Custom bar](images/custom.gif) ### I/O operations The `rpb` implements an `io writer` and `io reader` so it can automatically detect the number of bytes written to a stream. ```rust use rpb::bar::Bar; use std::fs::File; use std::io; fn main() -> io::Result<()> { let source = File::open("data.sql")?; let mut target = File::create("src.sql")?; let bar = Bar::default_bytes(source.metadata()?.len() as i64, "downloading"); io::copy(&mut bar.reader(source), &mut target).unwrap(); Ok(()) } ``` ![Custom bar](images/download.gif) ## Contributing 🤝 Contributions, issues, and feature requests are welcome! Feel free to check the issues page. ## 📝 License [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)