#进度条 #进度 #CLI #CLI 应用程序

avance

轻量级、并发无忧且用户友好的进度条

21 个版本 (4 个破坏性版本)

0.6.5 2023 年 7 月 13 日
0.6.4 2023 年 7 月 12 日
0.5.1 2023 年 7 月 5 日
0.4.4 2023 年 7 月 1 日
0.1.0 2023 年 6 月 27 日

命令行界面 中排名第 694

Download history 1/week @ 2024-03-10 17/week @ 2024-03-31

每月下载 165
用于 avance-cli

MIT/Apache

33KB
604 行(不包括注释)

一个用于在命令行应用程序中轻松显示进度条的 Rust 库。

avance 提供开箱即用的进度条实用工具,轻量级、用户友好,可以在并发环境中放心使用。

Documentation Crates.io

示例

examples/single.rs

examples/multi.rs


lib.rs:

avance 是一个 Rust 库,帮助您在命令行应用程序中轻松报告进度。它支持在并发程序中跟踪进度,并提供了各种自定义进度条的实用工具。

avance 在西班牙语中意为“前进”或“进步”。这个命名灵感来自 tqdm,其命名来自阿拉伯语。

以下是一个使用 avance 在多个线程中的示例

平台支持

  • Linux
  • macOS
  • Windows

进度条

AvanceBar 满足常见的跟踪进度需求。它可以显示必要的进度统计信息,并且可以用有界或无界的方式使用。

use avance::AvanceBar;

let pb = AvanceBar::new(100);
for _ in 0..100 {
    // ...
    pb.inc();
}
// Don't need to close a bar manually. It will close automatically when being dropped.

您可以调整进度条的宽度、样式和其他许多配置。

use avance::{AvanceBar, Style};

let pb = AvanceBar::new(100)
    .with_style(Style::Balloon)
    .with_width(80)
    .with_desc("avance");

// Use a progress bar along with an iterator, eliminating the need for invoking inc or update.
for _ in pb.with_iter(0..100) {
    // ...
}

行为

  • 当进度条被创建或关闭时,进度条将刷新
  • 如果进度条的宽度太大,则将使用环境宽度。
  • 进度条可以在线程之间 安全地共享

迭代器

进度条也可以与迭代器关联。

use avance::{AvanceIterator, Style};

for _ in (0..100).avance().with_style(Style::ASCII).with_width(80) {
    // ...
}

// avance provides the flexibility of changing a progress bar when iterating
for (_, pb) in (0..100).avance().with_pb() {
    // ...
    pb.set_postfix("");
}

样式

avance提供了多种预定义的进度条样式(在Style),同时允许用户根据他们的偏好轻松地进行自定义

for _ in (0..1000).avance().with_style_str("=>-") {
    // ...
}

待办事项

  • io管道的进度条
  • 用于非常缓慢的进度条的监控器

依赖

~1.4–10MB
~83K SLoC