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




多条滚动条效果




推荐阅读
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 基于域名、端口和IP的虚拟主机构建方案
    本文探讨了在单台物理服务器上构建多个Web站点的虚拟主机方案,详细介绍了三种主要的虚拟主机类型:基于域名、基于IP地址和基于端口的虚拟主机。每种类型的实现方式及其优缺点均进行了深入分析,为实际应用提供了全面的技术指导。 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • MongoDB高可用架构:深入解析Replica Set机制
    MongoDB的高可用架构主要依赖于其Replica Set机制。Replica Set通过多个mongod节点的协同工作,实现了数据的冗余存储和故障自动切换,确保了系统的高可用性和数据的一致性。本文将深入解析Replica Set的工作原理及其在实际应用中的配置和优化方法,帮助读者更好地理解和实施MongoDB的高可用架构。 ... [详细]
  • 【并发编程】全面解析 Java 内存模型,一篇文章带你彻底掌握
    本文深入解析了 Java 内存模型(JMM),从基础概念到高级特性进行全面讲解,帮助读者彻底掌握 JMM 的核心原理和应用技巧。通过详细分析内存可见性、原子性和有序性等问题,结合实际代码示例,使开发者能够更好地理解和优化多线程并发程序。 ... [详细]
  • 在 CentOS 6.6 系统中搭建 MONO 和 Jexus 以支持 ASP.NET 及 MVC 应用的运行环境配置指南
    本文提供了在 CentOS 6.6 系统上配置 MONO 和 Jexus 以支持 ASP.NET 及 MVC 应用的详细步骤。首先,确保本机环境为 CentOS 6.6,并使用阿里云的 YUM 源来安装必要的软件包,包括 gcc、gcc-c++、bison、pkgconfig 和 glib2-devel。这些软件包是构建和运行 MONO 环境的基础,确保系统能够顺利支持 ASP.NET 和 MVC 应用的部署和运行。 ... [详细]
  • 如何在Mac上构建高效的本地服务器环境
    在Mac上构建高效的本地服务器环境,首先需要了解基本步骤:1. 配置目录基础;2. 启动Apache服务;3. 添加自定义文档至本地服务器;4. 查看自定义效果。此外,还可以通过手机或其他电脑访问本机服务器,以确保跨设备的兼容性和调试效果。Mac系统自带的Apache服务为本地开发提供了便捷的工具,本文将详细介绍每个步骤的具体操作方法。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 在Linux系统中,为了提高安全性,可以通过设置命令执行超时和用户超时注销来防止因用户长时间未操作而带来的安全隐患。具体而言,可以通过编辑 `/etc/profile` 文件,添加或修改相关参数,确保用户在指定时间内无操作后自动注销。此外,还可以利用 `timeout` 命令来限制特定命令的执行时间,进一步增强系统的稳定性和安全性。 ... [详细]
  • 如何使用R语言高效连接并操作MySQL数据库
    如何使用R语言高效连接并操作MySQL数据库 ... [详细]
  • 在 LoadRunner 12.02 中,通过在脚本中添加 `lr_output_message("虚拟用户的IP是:%s", lr_get_vuser_ip())`,可以在 Controller 的运行日志中显示每个虚拟用户的 IP 地址。此外,为了实现服务器资源监控,可以通过配置 LoadRunner 的监控器来实时跟踪和记录服务器的各项性能指标,如 CPU 使用率、内存使用情况和网络带宽等。这些功能有助于更全面地评估系统的负载能力和稳定性。 ... [详细]
  • 在C#中开发多线程应用程序变得高效且简便,与之前使用VB时的复杂性和局限性形成鲜明对比。C#不仅提供了丰富的多线程编程模型,还简化了线程管理、同步和通信等关键任务,使得开发者能够更加轻松地构建高性能的应用程序。此外,C#的异步编程特性进一步增强了多线程应用的开发效率和可维护性。 ... [详细]
  • 如何在PHP中有效实现和管理互斥锁机制(PHP锁) ... [详细]
  • 在Python编程中,探讨了并发与并行的概念及其区别。并发指的是系统同时处理多个任务的能力,而并行则指在同一时间点上并行执行多个任务。文章详细解析了阻塞与非阻塞操作、同步与异步编程模型,以及IO多路复用技术的应用。通过模拟socket发送HTTP请求的过程,展示了如何创建连接、发送数据和接收响应,并强调了默认情况下socket的阻塞特性。此外,还介绍了如何利用这些技术优化网络通信性能和提高程序效率。 ... [详细]
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社区 版权所有