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命令行界面

Download history 7094/week @ 2024-04-09 9073/week @ 2024-04-16 8040/week @ 2024-04-23 8758/week @ 2024-04-30 7325/week @ 2024-05-07 7888/week @ 2024-05-14 8087/week @ 2024-05-21 7730/week @ 2024-05-28 8550/week @ 2024-06-04 6838/week @ 2024-06-11 7181/week @ 2024-06-18 8313/week @ 2024-06-25 5756/week @ 2024-07-02 7440/week @ 2024-07-09 11110/week @ 2024-07-16 5969/week @ 2024-07-23

32,497 每月下载量
128 个crate中(直接使用103个) 使用

MIT 许可证

40KB
726 代码行

Rust 的终端进度条

Latest version License Docs Build Status Gitter

pb 启发,支持并已在 MacOS、Linux 和 Windows 上进行测试

Screenshot

文档

示例

  1. 简单示例
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");
}
  1. 多进度条示例。完整示例请见 此处
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();
}
  1. 广播写入(简单的文件复制)
#![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