- Notifications
You must be signed in to change notification settings - Fork60
Console progress bar for Rust
License
NotificationsYou must be signed in to change notification settings
a8m/pb
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Console progress bar for Rust Inspired frompb, support andtested on MacOS, Linux and Windows
- simple example
use pbr::ProgressBar;use std::thread;fnmain(){let count =1000;letmut pb =ProgressBar::new(count); pb.format("╢▌▌░╟");for _in0..count{ pb.inc(); thread::sleep_ms(200);} pb.finish_print("done");}
- MultiBar example. see full examplehere
use std::thread;use pbr::MultiBar;use std::time::Duration;fnmain(){letmut mb =MultiBar::new();let count =100; mb.println("Application header:");letmut p1 = mb.create_bar(count);let _ = thread::spawn(move ||{for _in0..count{ p1.inc(); thread::sleep(Duration::from_millis(100));}// notify the multibar that this bar finished. p1.finish();}); mb.println("add a separator between the two bars");letmut p2 = mb.create_bar(count*2);let _ = thread::spawn(move ||{for _in0..count*2{ p2.inc(); thread::sleep(Duration::from_millis(100));}// notify the multibar that this bar finished. p2.finish();});// start listen to all bars changes.// this is a blocking operation, until all bars will finish.// to ignore blocking, you can run it in a different thread. mb.listen();}
- Broadcast writing (simple file copying)
#![feature(io)]use std::io::copy;use std::io::prelude::*;use std::fs::File;use pbr::{ProgressBar,Units};fnmain(){letmut file =File::open("/usr/share/dict/words").unwrap();let n_bytes = file.metadata().unwrap().len()asusize;letmut pb =ProgressBar::new(n_bytes); pb.set_units(Units::Bytes);letmut handle =File::create("copy-words").unwrap().broadcast(&mut pb);copy(&mut file,&mut handle).unwrap(); pb.finish_print("done");}
MIT
About
Console progress bar for Rust
Topics
Resources
License
Stars
Watchers
Forks
Packages0
No packages published