6 个版本
0.3.2-alpha | 2022年6月25日 |
---|---|
0.3.1 |
|
0.2.0 | 2019年7月18日 |
0.1.0 | 2019年7月16日 |
#400 在 命令行界面
3,620 每月下载量
用于 6 个 crate(2 个直接使用)
17KB
248 行
ansi_rgb
使用 ANSI 转义序列进行彩色终端文本。
- 非常简单的 API
- 3 位、4 位、8 位和 24 位颜色
- 着色所有 格式化特质
- 轻松添加自己的颜色类型
no_std
兼容
完整文档
lib.rs
:
前景颜色
use ansi_rgb::{ Colorable, red };
println!("{}", "Hello, world!".fg(red()));
输出
Hello,world!
背景颜色
use ansi_rgb::{ Colorable, red };
println!("{}", "Hello, world!".bg(red()));
输出
Hello,world!
嵌套
use ansi_rgb::{ Colorable, blue, green, red };
let formatted = format!(
"Hello, world! {}",
format!(
"{} is an interesting {}",
"This".fg(blue()),
"day".fg(red())
).bg(green())
);
println!("{}", formatted);
输出
Hello, world! This is an interesting day
任何可格式化的内容
use ansi_rgb::*;
#[derive(Debug)]
struct Foo(i32, i32);
let foo = Foo(1, 2);
println!("{:?}", foo.fg(green()));
输出
Foo(1, 2)
3 位颜色
use ansi_rgb::{ Colorable, Color3 };
println!("{}", "Hello, world!".fg(Color3::RED).bg(Color3::BLACK));
输出
Hello,world!
4 位颜色
use ansi_rgb::{ Colorable, Color4 };
println!("{}", "Hello, world!".fg(Color4::BRIGHT_RED).bg(Color4::BLACK));
输出
Hello,world!
8 位颜色
use ansi_rgb::{ Colorable, Color8 };
println!("{}", "Hello, world!".fg(Color8::new(160)).bg(Color8::new(0)));
输出
Hello,world!
24 位颜色
内置对 `rgb` crate 的支持。
# Cargo.toml
[dependencies]
rgb = { version = "0.8", default-features = false }
use ansi_rgb::{ Colorable };
use rgb::RGB8;
let fg = RGB8::new(123, 231, 111);
let bg = RGB8::new(10, 100, 20);
println!("{}", "Yuck".fg(fg).bg(bg));
输出
Yuck
扩展到其他颜色类型
如果你有自己的颜色类型并且知道如何将其转换为 ANSI 转义序列,只需实现 FormatColor
use ansi_rgb::{ Canvas, Colorable, FormatColor };
use core::fmt;
enum FavoriteColors {
SkyBlue,
RocketPlumeYellow,
TitaniumGray
}
impl FormatColor for FavoriteColors {
fn prelude(&self, f: &mut fmt::Formatter, canvas: Canvas) -> fmt::Result {
let (r, g, b) = match self {
FavoriteColors::SkyBlue => (135, 206, 235),
FavoriteColors::RocketPlumeYellow => (255, 255, 0),
FavoriteColors::TitaniumGray => (86, 95, 107)
};
write!(
f,
"\x1B[{};2;{};{};{}m",
match canvas {
Canvas::Foreground => 38,
Canvas::Background => 48
},
r,
g,
b
)
}
}
println!(
"The sky is {}",
"blue".fg(FavoriteColors::SkyBlue)
);
输出
天空是 蓝色
功能
default
包括 3 位、4 位、8 位和 24 位颜色,并依赖于 rgb
crate,为你提供以下功能
- 依赖于
rgb
crate - 为
rgb::RGB8
类型实现FormatColor
Color3
枚举及其FormatColor
实现Color4
结构体及其FormatColor
实现Color8
结构体及其FormatColor
实现- 颜色函数(
red()
、orange()
等)
Windows 用户
你需要 设置你的控制台模式。否则你会得到像这样的垃圾
�[48;2;159;114;0m �[0m
依赖项
~140KB