Rust终端加载动画神器spinoff:80+ Spinner样式一步点亮你的CLI体验
【免费下载链接】spinoff💫 Easy to use, robust Rust library for displaying spinners in the terminal项目地址: https://gitcode.com/gh_mirrors/sp/spinoff
写 Rust 命令行工具时,程序一运行就是十几秒的"死寂",用户只能干等。spinoff 是一个易用的 Rust 终端 Spinner 库,专门解决终端加载动画问题:一行依赖引入、三行代码启动,内置 80+ 种 Spinner 转圈动画样式,让你的 CLI 工具瞬间"活"起来。
为什么 CLI 工具需要加载动画?
任何涉及网络请求、文件扫描、编译打包的命令行程序,都离不开"程序还在运行中"的视觉反馈:
- 🎯 转圈动画让用户知道程序没有卡死
- 🎨 彩色提示、成功/失败符号,让输出更专业
- 🚀 几行代码即可实现,零 UI 学习成本
spinoff 把这些全部封装好了,你只需要关心"什么时候开始转、什么时候停"。
一步安装:只需在 Cargo.toml 加一行
在项目的 Cargo.toml 中添加依赖,即可使用最新版:
[dependencies] spinoff = "0.8.0"默认启用全部 Spinner 样式,开箱即用,无需任何额外配置。
快速上手:三行代码让 Spinner 转起来
核心 API 非常直观——创建一个 Spinner、等任务完成、打印结果(完整示例见 examples/simple.rs):
use spinoff::{Spinner, spinners, Color}; let mut spinner = Spinner::new(spinners::Dots, "Loading...", Color::Blue); // ... 执行耗时任务 ... spinner.success("Done!");创建即旋转:Spinner::new返回的瞬间动画已在独立线程中开始播放,完全不会阻塞你的业务逻辑。核心实现位于 src/lib.rs。
80+ 内置 Spinner 样式:总有一款配你的工具
从经典圆点、弧线、管道符,到猴子、鲨鱼、心跳、圣诞主题等趣味造型,src/spinners.rs 中定义的所有样式都能直接按名字调用:
| 样式 | 风格 | 适用场景 |
|---|---|---|
spinners::Dots | 经典圆点 | 通用加载 |
spinners::Arc | 弧线旋转 | 数据同步 |
spinners::Line | 横条 | 简洁风 CLI |
spinners::Pong | 乒乓球 | 趣味工具 |
spinners::Shark | 鲨鱼 | 整活首选 |
每个样式都对应一个独立的 Cargo feature,想瘦身时只保留需要的样式即可(配置方式见 Cargo.toml)。所有可用样式的完整清单可参考 src/spinners.rs。
自定义你的专属转圈动画
内置样式还不够?用spinner!宏两行定义自己的帧序列和间隔(宏定义见 src/lib.rs):
let frames = spinner!([">", ">>", ">>>"], 100);第一组参数是逐帧播放的字符数组,第二个参数是每帧间隔(毫秒),从此你的工具拥有独一无二的加载动画。
一句话收尾:success / fail / warn / info
任务结束时,spinoff 提供四种语义化的结束状态(实现见 src/lib.rs):
spinner.success("完成!")→ 绿色 ✓spinner.fail("编译失败")→ 红色 ✗spinner.warn("网络较慢")→ 黄色 ⚠spinner.info("提示")→ 蓝色 ℹ
调用后动画自动清除,原地留下带符号的结果行,终端输出干净利落。还可以用stop_and_persist("📜", "任务完成")自定义任意结尾符号,示例见 examples/stop_and_persist.rs。
运行中随时换文案、换样式
任务分阶段时,spinner 支持热更新:
update_text("快完成了..."):只改提示文字,动画不换(见 src/lib.rs)update(新样式, "重试中...", None):文案、样式、颜色一次全换update_after_time(...):定时自动切换提示,向用户传递"程序还活着"的信号
输出到 stderr:不污染管道数据
如果你的 CLI 工具向 stdout 输出结构化数据(比如 JSON),加载动画应该走 stderr。通过Spinner::new_with_stream(..., Streams::Stderr)即可切换输出流,实现位于 src/streams.rs,实战示例见 examples/stream.rs。
Windows 用户必读 ⚠️
Windows 上终端颜色需要手动开启虚拟终端支持,加两行初始化代码即可正常显示彩色动画,详细说明在 README.md。
总结
| 特性 | 说明 |
|---|---|
| 上手难度 | ⭐ 极低,3 行代码 |
| 内置样式 | 80+ 种,feature 可选 |
| 自定义 | spinner!宏自由组合 |
| 结束状态 | success / fail / warn / info |
| 输出流 | stdout / stderr 可切换 |
| 跨平台 | Linux / macOS / Windows 全支持 |
如果你正在开发 Rust 命令行工具,spinoff 是最省心的终端加载动画方案——装一行依赖,选一个喜欢的 Spinner 样式,剩下的交给它。更多完整用法可参考 src/lib.rs 顶部的文档说明。
【免费下载链接】spinoff💫 Easy to use, robust Rust library for displaying spinners in the terminal项目地址: https://gitcode.com/gh_mirrors/sp/spinoff
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考