Rust终端美化库terminal-light使用指南
terminal-light是一个轻量级的Rust库,用于快速美化命令行终端界面,提供颜色、样式、进度条等常见终端美化功能。
安装方法
在Cargo.toml中添加依赖:
[dependencies]
terminal-light = "0.3"
基本功能
1. 文本颜色和样式
use terminal_light::style;
fn main() {
// 彩色文本
println!("{}", style("红色文本").red());
println!("{}", style("绿色文本").green());
println!("{}", style("蓝色文本").blue());
// 加粗和斜体
println!("{}", style("加粗文本").bold());
println!("{}", style("斜体文本").italic());
// 组合样式
println!("{}", style("加粗红色文本").red().bold());
}
2. 进度条
use terminal_light::progress_bar;
use std::{thread, time};
fn main() {
let mut pb = progress_bar(100);
pb.set_style("█", " ", "|", "|");
for i in 0..100 {
pb.update(i);
thread::sleep(time::Duration::from_millis(50));
}
pb.finish("完成!");
}
3. 表格输出
use terminal_light::table;
fn main() {
let data = vec![
vec!["项目", "数量", "价格"],
vec!["苹果", "5", "$2.50"],
vec!["香蕉", "3", "$1.20"],
vec!["橙子", "8", "$3.60"],
];
table(&data)
.header_style(style("").bold().underline())
.column_alignment(1, terminal_light::Alignment::Right)
.column_alignment(2, terminal_light::Alignment::Right)
.print();
}
高级功能
1. 自定义主题
use terminal_light::{Style, Theme};
fn main() {
let my_theme = Theme::new()
.set_success_style(Style::new().green().bold())
.set_error_style(Style::new().red().underline())
.set_warning_style(Style::new().yellow().italic());
println!("{}", my_theme.success("操作成功!"));
println!("{}", my_theme.error("发生错误!"));
println!("{}", my_theme.warning("警告信息!"));
}
2. 交互式选择菜单
use terminal_light::menu;
fn main() {
let options = vec!["选项1", "选项2", "选项3"];
let selection = menu("请选择一个选项:", &options)
.highlight_style(style("").bg_blue())
.show();
println!("你选择了: {}", options[selection]);
}
3. 终端动画
use terminal_light::animation;
use std::thread;
use std::time::Duration;
fn main() {
let frames = vec![
"[ ]",
"[= ]",
"[== ]",
"[=== ]",
"[ ===]",
"[ ==]",
"[ =]",
"[ ]",
];
let anim = animation(&frames)
.set_interval(Duration::from_millis(100))
.set_style(style("").cyan());
anim.start();
thread::sleep(Duration::from_secs(3));
anim.stop();
}
完整示例代码
// 完整终端美化应用示例
use terminal_light::{
style,
progress_bar,
table,
Style,
Theme,
menu,
animation,
Alignment
};
use std::{
thread,
time::{Duration, Instant}
};
fn main() {
// 1. 文本样式演示
println!("\n=== 文本样式演示 ===");
println!("{}", style("默认文本"));
println!("{}", style("红色文本").red());
println!("{}", style("绿色背景文本").bg_green());
println!("{}", style("加粗下划线文本").bold().underline());
// 2. 进度条演示
println!("\n=== 进度条演示 ===");
let mut pb = progress_bar(50);
pb.set_style(">", "=", "|", "|");
let start = Instant::now();
for i in 0..=50 {
pb.update(i);
thread::sleep(Duration::from_millis(100));
}
pb.finish(&format!("完成! 耗时: {:?}", start.elapsed()));
// 3. 表格输出演示
println!("\n=== 表格输出演示 ===");
let sales_data = vec![
vec!["产品", "季度", "销量", "增长率"],
vec!["手机", "Q1", "1200", "+5.2%"],
vec!["笔记本", "Q1", "850", "+12.8%"],
vec!["平板", "Q1", "600", "+8.3%"],
];
table(&sales_data)
.header_style(style("").cyan().bold())
.column_alignment(2, Alignment::Right)
.column_alignment(3, Alignment::Right)
.print();
// 4. 自定义主题演示
println!("\n=== 自定义主题演示 ===");
let app_theme = Theme::new()
.set_success_style(Style::new().green().bold())
.set_error_style(Style::new().red().underline().bold())
.set_highlight_style(Style::new().bg_blue().white());
println!("{}", app_theme.success("数据保存成功!"));
println!("{}", app_theme.error("错误: 文件未找到"));
// 5. 交互式菜单演示
println!("\n=== 交互式菜单演示 ===");
let languages = vec!["Rust", "Go", "Python", "JavaScript"];
let choice = menu("请选择你最喜欢的语言:", &languages)
.highlight_style(app_theme.get_highlight_style().clone())
.show();
println!("{}", style(format!("你选择了: {}", languages[choice])).green());
// 6. 终端动画演示
println!("\n=== 终端动画演示 ===");
let spinner_frames = vec![
"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"
];
let spinner = animation(&spinner_frames)
.set_interval(Duration::from_millis(100))
.set_style(style("").yellow());
println!("处理中... ");
spinner.start();
thread::sleep(Duration::from_secs(3));
spinner.stop();
println!("{}", app_theme.success("处理完成!"));
}
最佳实践
- 错误处理:对用户输入进行验证,使用适当的颜色标记错误
- 响应式设计:检测终端宽度并相应调整输出
- 性能考虑:频繁更新UI时使用
terminal_light::flush()
减少重绘次数
terminal-light库简单易用,适合快速为Rust命令行程序添加美观的界面元素,同时保持轻量级和跨平台兼容性。