作者:蘑菇宝 | 来源:互联网 | 2023-10-11 15:03
篇首语:本文由编程笔记#小编为大家整理,主要介绍了indicatif——Rust语言超酷的进度条库相关的知识,希望对你有一定的参考价值。Rust作为新的语言,这两年发展很
篇首语:本文由编程笔记#小编为大家整理,主要介绍了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实现的动图:
进度条是手动前进的,默认情况下绘制到标准错误stderr。完成后,可以显示进度条(进度条保留在屏幕上)或自动清除(进度条被删除)。
一个简单实例如下:
一般进度条行为
如果检测到非终端,则进度条将完全隐藏。这使得日志文件的管道程序开箱即用。
进度条仅在调用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个字符的进度条,以青色作为样式颜色,蓝色作为替代样式颜色。替代样式目前仅用于进度条。
该模版实例使用:
模版关键字:
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也提供一些格式库,用来增强经历时间和文件大小的可读性
实例效果:
下载文件效果:
多条滚动条效果