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




多条滚动条效果




推荐阅读
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • 本文详细介绍了如何在 Node.js 环境中利用 Nodemailer 库实现邮件发送功能,包括环境配置、代码实现及常见问题解决方法。 ... [详细]
  • 使用C#构建动态图形界面时钟
    本篇文章将详细介绍如何利用C#语言开发一个具有动态显示功能的图形界面时钟。文章中不仅提供了详细的代码示例,还对可能出现的问题进行了深入分析,并给出了解决方案。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 使用Python构建网页版图像编辑器
    本文详细介绍了一款基于Python开发的网页版图像编辑工具,具备多种图像处理功能,如黑白转换、铅笔素描效果等。 ... [详细]
  • 本报告记录了嵌入式软件设计课程中的第二次实验,主要探讨了使用KEIL V5开发环境和ST固件库进行GPIO控制及按键响应编程的方法。通过实际操作,加深了对嵌入式系统硬件接口编程的理解。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文详细介绍了 Node.js 中 OS 模块的 arch 方法,包括其功能、语法、参数以及返回值,并提供了具体的使用示例。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • 文章目录前言Program(程序)Identifier(标识符)Literal(字面量)Vari ... [详细]
  • 本文探讨了在使用JavaMail发送电子邮件时,抄送功能未能正常工作的问题,并提供了详细的代码示例和解决方法。 ... [详细]
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社区 版权所有