热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

篇首语:本文由编程笔记#小编为大家整理,主要介绍了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实现的动图:

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语言超酷的进度条库




多条滚动条效果




推荐阅读
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了sqlserver云存储和本地存储的区别,云存储是将数据存储在网络上,方便查看和调用;本地存储是将数据存储在电脑磁盘上,只能在存储的电脑上查看。同时提供了几种启动sqlserver的方法。此外,还介绍了如何导出数据库的步骤和工具。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
author-avatar
蘑菇宝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有