13 个稳定版本
| 3.0.2 | 2020年9月1日 |
|---|---|
| 2.2.3 | 2020年3月27日 |
| 2.2.0 | 2020年1月31日 |
| 1.0.3 | 2020年1月25日 |
#221 在 命令行界面
380 每月下载次数
在 4 个包 中使用
32KB
722 行
progressing
外观和感觉
首先,需要 trait Baring。
use progressing::{
// The underlying Trait
Baring,
// Just handy names for the examples below
bernoulli::Bar as BernoulliBar,
clamping::Bar as ClampingBar,
mapping::Bar as MappingBar,
};
以下展示了提供的进度条的多种使用场景。请注意,下面的例子使用了 set(...),但也支持 add(...)。
-
打印值
0.3被限制在[0, 1]内,打印[=====>------------]。let mut progress_bar = ClampingBar::new(); progress_bar.set_len(20); progress_bar.set(0.3); println!("{}", progress_bar); -
打印值
4从[-9, 5]映射到[0, 1],打印[================>-] (4 / 5)。let mut progress_bar = MappingBar::with_range(-9, 5); progress_bar.set_len(20); progress_bar.set(4); println!("{}", progress_bar); -
每个条形图都可以使用基于过去过程的简单时间近似来使用。对于这个持续时间的过程,这个例子将打印
[================>-] (4 / 5) ~ 2 min。唯一的区别是调用了timed()。let mut progress_bar = MappingBar::with_range(-9, 5).timed(); progress_bar.set_len(20); progress_bar.set(4); println!("{}", progress_bar); -
如果需要计数并且可能发生故障,请尝试这个例子。当计数
42次成功时,其中60是目标,且已尝试130次,将打印[============>-----] (42 / 60 # 130)。使用bool添加试验可能更方便。let mut progress_bar = BernoulliBar::from_goal(60); progress_bar.set_len(20); progress_bar.set((42, 130)); println!("{}", progress_bar); let is_successful = true; if is_successful { // Does increase both 42 and 130 progress_bar.add(true); } else { // Does increase 130 only progress_bar.add(false); } -
您可以通过将其设置为包含
5个字符的字符串来更改条形的样式。let mut progress_bar = ClampingBar::new(); progress_bar.set_len(20); progress_bar.set(0.3); // different custom styles are possible // prints (----->............) progress_bar.set_style("(->.)"); println!("{}", progress_bar); // prints [##### ] progress_bar.set_style("[# ]"); println!("{}", progress_bar); // prints (#####-------------) progress_bar.set_style("(#--)"); println!("{}", progress_bar); -
另一个典型用例可能是循环中打印一些而不是所有进度。
let mut progress_bar = BernoulliBar::with_goal(100).timed(); progress_bar.set_len(20); progress_bar.set(13); // do the job and show progress for _ in 0..100 { progress_bar.add(true); if progress_bar.has_progressed_significantly() { progress_bar.remember_significant_progress(); println!("{}", progress_bar); } std::thread::sleep(std::time::Duration::from_millis(100)); } println!("{}", progress_bar);将打印
[=>................] (10/100) #14 ~8s [===>..............] (20/100) #20 ~7s [=====>............] (30/100) #30 ~6s [=======>..........] (40/100) #40 ~5s [=========>........] (50/100) #50 ~4s [==========>.......] (60/100) #60 ~3s [============>.....] (70/100) #70 ~2s [==============>...] (80/100) #80 ~1s [================>.] (90/100) #90 ~0s [==================] (100/100) #100 ~0s [==================] (100/100) #113 ~0s每当达到目标
10 %的一次时,就会打印一行。请注意,进度条从13开始,因此总共需要113次尝试。
设置和使用
只需将 progressing = '3' 添加到 Cargo.toml 中的依赖项。
请参阅示例以获取更多示例。
依赖关系
~88KB