#progress-bar #spinner #terminal #terminal-size #title #status #renderer

termprogress

带状态和旋转器的终端进度条渲染器

7 个不稳定版本

0.10.0 2023 年 8 月 1 日
0.3.4 2020 年 8 月 10 日
0.2.4 2020 年 8 月 9 日
0.1.2 2020 年 7 月 25 日

5#terminal-size 中排名

Download history 8/week @ 2024-03-13 6/week @ 2024-03-20 7/week @ 2024-03-27 15/week @ 2024-04-03 1/week @ 2024-04-10 1/week @ 2024-04-17 9/week @ 2024-04-24 1/week @ 2024-05-22 4/week @ 2024-05-29

每月 116 次下载
用于 leanify-many

GPL-3.0 或更高版本

44KB
1K SLoC

Termprogress - 终端进度条

Rust 的简单可自定义终端进度条。

功能

  • 可自定义,具有特质系统,允许传递任何类型的进度条
  • 可选地使用 terminal_size 包来防止长标题溢出终端
  • 接口,易于操作进度条

外观

50%,75% 和 100% 的进度条

[=========================                         ]: 50.00% some title
[=====================================             ]: 75.00% some other title
[==================================================]: 100.00% some other title

4 阶段的旋转器

Some title /
Some title -
Some title \
Some title |

入门。

要快速使用默认的进度条和旋转器,您可以包含 prelude

use termprogress::prelude::*;

let mut progress = Bar::default(); // Create a new progress bar

progress.set_title("Work is being done...");
/// *does work*
progress.set_progress(0.25);
progress.set_progress(0.5);
progress.println("Something happened");
progress.set_progress(0.75);
progress.println("Almost done...");
progress.set_progress(1.0);

/// completes
progress.complete();

旋转器

use termprogress::prelude::*;

let mut spinner = Spin::default(); //Create a new spinner
/// *does work*
spinner.bump();
spinner.bump();
progress.println("Something happened");
spinner.bump();
spinner.bump();

/// completes
progress.complete_with("Done!");

默认功能

默认情况下,启用了 size 功能,它需要依赖项 terminal_size。如果没有它,Bar 将不会尝试获取终端大小以防止溢出。您可以使用 default-features=false 来禁用它。

特质

该库提供了进度条的特质:ProgressBarSpinner

这些特质的默认实现是 BarSpin,但您也可以提供自己的实现以获得更多自定义性。

还有一个 Silent,它实现了 ProgressBarSpinner,并且什么也不做,以便可以轻松地根据配置打开或关闭进度显示。

pub fn does_work<P: ProgressBar>(bar: &mut P) 
{
	//does work...
	bar.set_progress(0.5);
	//more work...
	bar.set_progress(1.0);
}

does_work(&mut Bar::default());
does_work(&mut MyBar::new());

if NOPROGRESS {
	does_wotk(&mut Silent)
} else {
	does_work(&mut Bar::default())
}

许可

GPL 许可,爱心满满 <3

依赖项

~57–430KB