Rust彩色终端输出宏库bunt-macros的使用,轻松实现ANSI颜色代码的跨平台文本格式化
Rust彩色终端输出宏库bunt-macros的使用,轻松实现ANSI颜色代码的跨平台文本格式化
安装
在项目目录中运行以下Cargo命令:
cargo add bunt-macros
或者将以下行添加到您的Cargo.toml中:
bunt-macros = "0.2.8"
基本使用示例
use bunt::println;
fn main() {
// 红色文本
println!("{[red]}这是红色文本{[/]}");
// 绿色背景的白色文本
println!("{[white+green.bold]}这是白色粗体文本,带绿色背景{[/]}");
// 带下划线的黄色文本
println!("{[yellow.underline]}这是带下划线的黄色文本{[/]}");
}
完整示例代码
use bunt::{println, print};
fn main() {
// 简单颜色示例
println!("{[red]}红色警告信息{[/]}");
println!("{[green]}成功信息{[/]}");
println!("{[blue]}提示信息{[/]}");
// 组合样式示例
println!("{[yellow.bold]}粗体黄色文本{[/]}");
println!("{[magenta.italic]}斜体品红色文本{[/]}");
println!("{[cyan.underline]}带下划线的青色文本{[/]}");
println!("{[white+bold+red.bg]}白色粗体文本,红色背景{[/]}");
// 使用print!宏
print!("{[green]}正在处理... {[/]}");
print!("{[blue]}完成!{[/]}\n");
// 格式化字符串中使用
let name = "Alice";
let age = 25;
println!("{[cyan]}姓名:{[/]} {[yellow]}{}{[/]}, {[cyan]}年龄:{[/]} {[green.bold]}{}{[/]}", name, age);
// 嵌套样式示例
println!("正常文本 {[red]}红色文本 {[blue.bold]}蓝色粗体文本{[/]} 仍然红色 {[/]} 返回正常");
// 更多组合示例
println!("{[black+white.bg]}黑底白字{[/]}");
println!("{[red.underline+blink]}红色带下划线闪烁文本{[/]}");
println!("{[green.bold+italic]}绿色粗斜体文本{[/]}");
}
可用颜色和样式
支持以下颜色和样式组合:
- 前景色:
black
,red
,green
,yellow
,blue
,magenta
,cyan
,white
- 背景色:在颜色后加
.bg
,如red.bg
- 文本样式:
bold
(粗体),dim
(暗淡),italic
(斜体),underline
(下划线),blink
(闪烁),reverse
(反色),hidden
(隐藏)
跨平台支持
bunt-macros会自动检测平台是否支持ANSI颜色代码,在不支持的平台(如Windows cmd)上会自动禁用颜色输出,确保跨平台兼容性。
该库由Lukas Kalbertodt维护,采用MIT或Apache-2.0许可证。
1 回复
Rust彩色终端输出宏库bunt-macros使用指南
bunt-macros
是一个Rust宏库,用于简化终端中的彩色文本输出,它提供了跨平台的ANSI颜色代码支持,让开发者可以轻松实现彩色终端输出而无需手动处理复杂的ANSI转义序列。
安装
在Cargo.toml
中添加依赖:
[dependencies]
bunt-macros = "0.2"
基本用法
1. 使用bunt!
宏
use bunt_macros::bunt;
fn main() {
// 红色文本
bunt!(println!("{[red]}红色文本{/[]} 普通文本"));
// 绿色文本
bunt!(println!("{[green]}绿色文本{/[]} 普通文本"));
// 蓝色文本
bunt!(println!("{[blue]}蓝色文本{/[]} 普通文本"));
}
2. 样式组合
use bunt_macros::bunt;
fn main() {
// 粗体红色文本
bunt!(println!("{[red+bold]}粗体红色文本{/[]}"));
// 带下划线的绿色文本
bunt!(println!("{[green+underline]}带下划线的绿色文本{/[]}"));
// 蓝色文本黄色背景
bunt!(println!("{[blue+bg:yellow]}蓝色文本黄色背景{/[]}"));
}
可用样式选项
- 颜色:
black
,red
,green
,yellow
,blue
,magenta
,cyan
,white
- 背景色:
bg:black
,bg:red
等(前缀bg:
) - 样式:
bold
,dim
,italic
,underline
,blink
,reverse
,hidden
,strikethrough
高级用法
1. 变量插值
use bunt_macros::bunt;
fn main() {
let name = "Rust";
// 使用变量插值输出绿色文本
bunt!(println!("Hello, {[green]}{}{[/]}!", name));
}
2. 嵌套样式
use bunt_macros::bunt;
fn main() {
// 嵌套样式:蓝色文本中包含红色文本
bunt!(println!(
"{[blue]}蓝色文本中的{[red]}红色文本{/[blue]}继续蓝色文本{[/]}"
));
}
3. 条件样式
use bunt_macros::bunt;
fn main() {
let success = true;
// 根据条件显示不同颜色
bunt!(println!(
"操作结果: {[if success {green} else {red}]}{}{[/]}",
if success { "成功" } else { "失败" }
));
}
注意事项
bunt-macros
会自动处理跨平台兼容性,在不支持ANSI颜色的终端上会优雅降级- 使用
{[/]}
来重置所有样式 - 可以嵌套样式,但要注意正确关闭
完整示例
use bunt_macros::bunt;
fn main() {
// 简单颜色示例
bunt!(println!("{[red]}警告信息{[/]}"));
bunt!(println!("{[green]}成功信息{[/]}"));
// 组合样式示例
bunt!(println!("{[yellow+bold+underline]}重要通知{[/]}"));
// 背景色示例
bunt!(println!("{[white+bg:blue]}白字蓝底{[/]}"));
// 复杂综合示例
let username = "Alice";
let score = 95;
bunt!(println!(
"用户 {[cyan]}{}{[/]} 的得分是 {[bold+if score >= 90 {green} else {red}]}{}{[/]}",
username, score
));
// 多行文本示例
bunt!(println!(
"{[magenta]}第一行{/[]}\n{[cyan]}第二行{/[]}\n{[yellow]}第三行{/[]}"
));
// 复杂嵌套示例
bunt!(println!(
"{[blue]}蓝色{[bg:white]}白底{[red+underline]}红色下划线{/[]}返回蓝色白底{/[]}返回纯蓝色{/[]}"
));
}
bunt-macros
提供了一种简洁、类型安全的方式来处理终端颜色输出,相比直接使用ANSI转义序列更加易读和易维护。