24 个版本 (7 个稳定版)
1.1.1 | 2023年2月8日 |
---|---|
1.0.4 | 2021年1月10日 |
1.0.3 | 2020年5月28日 |
1.0.2 | 2019年9月21日 |
0.0.4 | 2015年10月15日 |
38 在 命令行界面 中
32,497 每月下载量
在 128 个crate中(直接使用103个) 使用
40KB
726 代码行
Rust 的终端进度条
受 pb 启发,支持并已在 MacOS、Linux 和 Windows 上进行测试
示例
- 简单示例
use pbr::ProgressBar;
use std::thread;
fn main() {
let count = 1000;
let mut pb = ProgressBar::new(count);
pb.format("╢▌▌░╟");
for _ in 0..count {
pb.inc();
thread::sleep_ms(200);
}
pb.finish_print("done");
}
- 多进度条示例。完整示例请见 此处
use std::thread;
use pbr::MultiBar;
use std::time::Duration;
fn main() {
let mut mb = MultiBar::new();
let count = 100;
mb.println("Application header:");
let mut p1 = mb.create_bar(count);
let _ = thread::spawn(move || {
for _ in 0..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");
let mut p2 = mb.create_bar(count * 2);
let _ = thread::spawn(move || {
for _ in 0..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();
}
- 广播写入(简单的文件复制)
#![feature(io)]
use std::io::copy;
use std::io::prelude::*;
use std::fs::File;
use pbr::{ProgressBar, Units};
fn main() {
let mut file = File::open("/usr/share/dict/words").unwrap();
let n_bytes = file.metadata().unwrap().len() as usize;
let mut pb = ProgressBar::new(n_bytes);
pb.set_units(Units::Bytes);
let mut handle = File::create("copy-words").unwrap().broadcast(&mut pb);
copy(&mut file, &mut handle).unwrap();
pb.finish_print("done");
}
许可证
MIT
依赖项
~310–560KB