Rust终端颜色控制库wincolor的使用,wincolor提供Windows平台下命令行文本的高效颜色与样式控制
Rust终端颜色控制库wincolor的使用
注意事项
此crate已终止维护并弃用。该crate已被合并到winapi-util
crate中,winapi-util
的console
模块可以直接替代wincolor
。
基本示例
use wincolor::{Console, Color, Intense};
let mut con = Console::stdout().unwrap();
con.fg(Intense::Yes, Color::Cyan).unwrap();
println!("This text will be intense cyan.");
con.reset().unwrap();
println!("This text will be normal.");
完整示例
extern crate wincolor;
use wincolor::{Console, Color, Intense};
fn main() {
// 获取标准输出控制台句柄
let mut con = match Console::stdout() {
Ok(con) => con,
Err(e) => {
eprintln!("获取控制台失败: {}", e);
return;
}
};
// 设置普通红色前景色
if let Err(e) = con.fg(Intense::No, Color::Red) {
eprintln!("设置颜色失败: {}", e);
return;
}
println!("这段文字是红色的");
// 设置绿色背景色
if let Err(e) = con.bg(Intense::No, Color::Green) {
eprintln!("设置背景色失败: {}", e);
return;
}
println!("这段文字有绿色背景");
// 设置亮蓝色前景色
if let Err(e) = con.fg(Intense::Yes, Color::Blue) {
eprintln!("设置高亮颜色失败: {}", e);
return;
}
println!("这段文字是亮蓝色的");
// 重置所有属性
if let Err(e) = con.reset() {
eprintln!("重置控制台失败: {}", e);
return;
}
println!("恢复正常文字样式");
}
可用颜色选项
wincolor支持以下颜色常量:
Color::Black
Color::Blue
Color::Green
Color::Red
Color::Cyan
Color::Magenta
Color::Yellow
Color::White
可以通过Intense::Yes
或Intense::No
来控制是否使用高亮(明亮)颜色。
1 回复
Rust终端颜色控制库wincolor使用指南
wincolor
是一个专门为Windows平台设计的Rust库,用于在命令行中控制文本颜色和样式。它提供了简单高效的API来改变控制台输出的外观。
基本功能
- 设置前景色(文本颜色)
- 设置背景色
- 重置颜色到默认值
- 支持基本的颜色集(黑色、红色、绿色、黄色、蓝色、洋红、青色、白色)
使用方法
首先在Cargo.toml
中添加依赖:
[dependencies]
wincolor = "1.0"
基本示例
use wincolor::{Console, Color};
fn main() {
// 获取标准输出控制台
let mut con = Console::stdout().unwrap();
// 设置红色文本
con.fg(Color::Red).unwrap();
println!("这是红色文本");
// 设置绿色背景
con.bg(Color::Green).unwrap();
println!("红色文本绿色背景");
// 重置颜色
con.reset().unwrap();
println!("恢复正常颜色");
}
更复杂的样式组合
use wincolor::{Console, Color};
fn main() {
let mut con = Console::stdout().unwrap();
// 蓝色背景,黄色文本
con.bg(Color::Blue).unwrap();
con.fg(Color::Yellow).unwrap();
println!("警告信息!");
// 重置颜色
con.reset().unwrap();
}
便捷宏示例
wincolor
还提供了宏来简化颜色设置:
use wincolor::{colorize, Color};
fn main() {
// 使用宏设置红色文本
colorize!(Color::Red, println!("错误: 文件未找到"));
// 设置绿色文本蓝色背景
colorize!(Color::Green, Color::Blue, println!("成功: 操作完成"));
}
注意事项
wincolor
仅适用于Windows平台,在其他操作系统上会编译但不会有任何效果- 颜色设置会影响之后的所有输出,直到调用
reset()
或程序结束 - 某些旧版Windows控制台可能不支持所有颜色
高级用法
对于需要更精细控制的情况,可以直接使用Windows API:
use wincolor::{Console, Color, Intense};
fn main() {
let mut con = Console::stdout().unwrap();
// 设置高亮(明亮)红色
con.fg(Intense::Yes(Color::Red)).unwrap();
println!("重要警告!");
con.reset().unwrap();
}
完整示例代码
下面是一个完整的wincolor使用示例,展示了各种颜色组合和样式设置:
use wincolor::{Console, Color, Intense, colorize};
fn main() {
// 基本颜色设置示例
let mut con = Console::stdout().unwrap();
// 红色文本
con.fg(Color::Red).unwrap();
println!("错误信息 - 红色文本");
// 绿色背景
con.bg(Color::Green).unwrap();
println!("警告信息 - 红色文本绿色背景");
// 重置颜色
con.reset().unwrap();
println!("正常信息 - 默认颜色");
// 使用宏设置颜色
colorize!(Color::Blue, println!("提示信息 - 蓝色文本"));
colorize!(Color::Yellow, Color::Magenta, println!("特殊信息 - 黄色文本洋红背景"));
// 高级用法 - 高亮颜色
con.fg(Intense::Yes(Color::Cyan)).unwrap();
println!("高亮信息 - 明亮的青色文本");
// 重置所有样式
con.reset().unwrap();
// 复杂样式组合
con.fg(Color::White).unwrap();
con.bg(Color::Red).unwrap();
println!("紧急错误 - 白色文本红色背景");
// 记得最后重置颜色
con.reset().unwrap();
}
wincolor
是Windows平台下简单高效的终端颜色控制解决方案,特别适合需要区分不同输出类型的命令行工具开发。