#progress-bar #progress #tui

bin+lib multi-progressbar

一个在终端中显示多个进度条、旨在不影响您的库

1个不稳定版本

0.1.0 2023年7月12日

#97 in #progress-bar

Apache-2.0

14KB
252 代码行

multi-progress

multi-progress是一个库,用于在终端中显示多个进度条以及日志输出。

用法

  1. 为您的任务实现TaskProgress特质。
  2. 使用ProgressBar实现(由bar模块提供)创建一个MultiProgressBar
  3. 在需要时调用MultiProgressBar::draw来绘制进度条。
use multi_progressbar::{
    MultiProgressBar, TaskProgress,
    bar::classic::ClassicProgressBar
};

struct Task {
    name: String,
    progress: u64,
    total: u64,
}

impl TaskProgress for Task {
    fn progress(&self) -> (u64, u64) {
        (self.progress, self.total)
    }
    fn after(&self) -> Option<String> {
        Some(format!("{}/{} completed", self.progress, self.total))
    }
    fn before(&self) -> Option<String> {
        Some(self.name.clone())
    }
}

let mp = MultiProgressBar::new(ClassicProgressBar::new());
let task1 = Task {
   name: "task1".to_string(),
   progress: 0,
   total: 100,
};
let task2 = Task {
    name: "task2".to_string(),
    progress: 33,
    total: 100,
};
let tasks = vec![task1, task2];
mp.draw(&tasks).unwrap();

依赖项

~1–12MB
~87K SLoC