#progress-bar #progress #cli

progression

简约且快速的 Rust 进度条

2 个版本

0.1.15 2023年2月12日
0.1.14 2023年2月7日
0.1.11 2023年1月30日

#381 in 命令行界面

Download history 1/week @ 2024-03-17 8/week @ 2024-03-31 1/week @ 2024-05-26

59 每月下载次数
chunker 中使用

MIT 许可证

10KB
174 代码行

progression

简约(174 SLOC)且快速(更新受限制)的 Rust 进度条。

 00:00:05   475 / 1,000 [##########################                          ]  48% ETA 00:00:06
 00:00:04   394 / 1,000 [=====================>                              ]  39% ETA 00:00:07

用法

cargo add progression

依赖项是可选的(使用 cargo add --no-default-features progression 或在 Cargo.toml 中设置 default-features = false)禁用

  • terminal_size — 获取终端宽度
  • num-format — 使用分隔符格式化数字

示例

use std::{thread, time::Duration};

fn main() {
    // Default
    for _ in progression::bar(0..1_000) {
        thread::sleep(Duration::from_millis(1));
    }

    // Cargo style
    for _ in progression::bar_with_config(0..1_000, progression::Config::cargo()) {
        thread::sleep(Duration::from_millis(1));
    }

    // Unicode style
    for _ in progression::bar_with_config(0..1_000, progression::Config::unicode()) {
        thread::sleep(Duration::from_millis(1));
    }

    // Uses `slice.chunks` internally for lower overhead on large numbers of items
    for _ in progression::bar_chunks(10, &[0; 1_000]) {
        thread::sleep(Duration::from_millis(1));
    }

    // Custom
    for _ in progression::bar_with_config(0..1_000,
            progression::Config { style: progression::Style::Mono('·'), ..Default::default() }) {
        thread::sleep(Duration::from_millis(1));
    }

    // Manual
    let items = vec![1, 2, 3, 4, 5];
    let bar = progression::Bar::new(items.len() as u64,
        progression::Config { prefix: "(items) ", ..progression::Config::cargo() });

    for _ in items {
        thread::sleep(Duration::from_millis(100));
        bar.inc(1);
    }

    bar.finish();
}

依赖项

~2–14MB
~140K SLoC