indicatif——Rust语言超酷的进度条库

Posted 虫虫搜奇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了indicatif——Rust语言超酷的进度条库相关的知识,希望对你有一定的参考价值。

Rust作为新的语言,这两年发展很快,各种优秀的工具和库层出不穷。今天虫虫给大家介绍一个进度条基础类库indicatif。用它我们可以帮助很方便的构建好看而且超酷的命令行进度条。


平台支持

indicatif是个平台运行库,支持Linux、Mac OS X和Windows(颜色支持需要Win10以上版本)。idicatif可以完美支持Rust类库中的console和dialoguer库,一起构建明亮行工具。

indicatif基础部件

组件

ProgressBar用户构建bar和spinner组件。

MultiProgress用于构建多个条形图

数据格式

HumanBytes用于格式化字节。

DecimalBytes用于格式化使用SI前缀的字节。

BinaryBytes用于格式化使用ISO/IEC前缀字节。

HumanDuration用于设置效果持续时间

进度条和spinner使用

indicatif的ProgressBar类型支持有边界的进度条和无边界的spinner类型进度报告。进度条属于Sync和Send对象,所以可以被内部被锁定,并在线程间传递。同时,还提供了一个MultiProgress的实用程序部件,可以同时管理作多个进度条(多线程控制)。下面是一个实例显示了indicatif实现的动图:

indicatif——Rust语言超酷的进度条库


进度条是手动前进的,默认情况下绘制到标准错误stderr。完成后,可以显示进度条(进度条保留在屏幕上)或自动清除(进度条被删除)。

一个简单实例如下:

indicatif——Rust语言超酷的进度条库


一般进度条行为

如果检测到非终端,则进度条将完全隐藏。这使得日志文件的管道程序开箱即用。

进度条仅在调用set_message,inc,set_position或tick时开始绘制。应明确完成进度条以重置其他渲染。通过清除它们或用新消息替换它们/保留当前消息。

默认模板下既不显示消息也不显示前缀。

模板

可以使用类似于Rust本身的简单格式字符串设置进度条的样式。使用占位符的格式为{key:options},其中options部分是可选的。基本格式列举如下:

[<^>] 可选,对齐规范

WIDTH 可选,宽度为正整数

! 可选,感叹号用于启用截断

.STYLE 可选,点分隔样式颜色字符串

/STYLE 可选,点分隔替代颜色样式字符串

更多的有关样式组件,请参考官方Styled::from_dotted_strw文档。

一个模版例子如下:

[{elapsed_precise}] {bar:40.cyan/blue} {pos:>7}/{len:7} {msg}

该设置效果为一个宽度为40个字符的进度条,以青色作为样式颜色,蓝色作为替代样式颜色。替代样式目前仅用于进度条。

该模版实例使用:

indicatif——Rust语言超酷的进度条库


模版关键字:

bar:呈现进度条。默认为20个字符宽。样式颜色为已运行部分着色,主颜色用于尚未呈现的条。

wide_bar:同ba,只填充剩余的空间。

spinner:渲染闪动效果(当前刻度字符)

prefix:呈现进度条上设置的前缀字符(图)。

msg:在进度条上呈现当前设置的消息。

wide_msg:与msg一样,只填充剩余的空格并截断。

pos:将条形的当前位置呈现为整数

len:将条的总长度呈现为整数

bytes:将条形的当前位置呈现为字节。

percent:将条形的当前位置呈现为总长度的百分比。

total_bytes:将条的总长度显示为字节。

elapsed_precise:将经过的时间渲染为HH:MM:SS。

elapsed:将经过的时间渲染为42秒,1分钟等。

eta_precise:剩余时间(类似elapsed_precise)。

eta:剩余时间(类似elapsed)。

进度条的样式还可以使用内建的模板函数来设置,通过设置进度条的ProgressStyl属性实现。

增加可读行格式

dindicatif也提供一些格式库,用来增强经历时间和文件大小的可读性

indicatif——Rust语言超酷的进度条库


实例效果:

下载文件效果:

indicatif——Rust语言超酷的进度条库



多条滚动条效果


以上是关于indicatif——Rust语言超酷的进度条库的主要内容,如果未能解决你的问题,请参考以下文章

Python 进度条

Python进度条:tqdm

tqdm:Python 进度条

视觉笔记入门,用视觉语言做超酷的笔记

Python 制作进度条,原来有这么多方法!

Python开发技巧-教你制作Python进度条