Rust 编程指南·酷色篇 #01 | 从多彩输出,体会不一样的开端
可能很多朋友搭完编程环境,就开始从数据类型、流程控制开始哐哐学。这样意义其实并不大,而我打算给大家一个 不一样的入门体验,就先从 颜色 开始吧。比如本篇以下面的效果为目标,一起学习吧 ~

1. 给你的打印着上色
你有没有发现,当我们用 println! 输出信息时,所有文字都是一个颜色,看起来单调乏味。但是你知道吗?其实我们可以让控制台输出变得多彩多姿!
现在你可以先把下面的代码运行一下,体验一下其他颜色的输出效果:
fn main() {
println!("\x1b[31mHello, World!\x1b[0m");
}
运行后可以看到,控制台打印了红色的

2. 了解 ANSI 转义码基础
那么,这个“魔法”是怎么实现的呢?答案就是 ANSI 转义码。
你可以把 ANSI 转义码想象成一种“暗号”,就像我们在聊天时用的表情包一样。当终端看到这些特殊的字符序列时,就知道要改变文字的颜色或者样式了。

这句话是 Rust 语言中用于在终端输出红色文本的打印语句,核心是通过「ANSI 转义序列」控制文本颜色。
语句核心构成如下:
println!:Rust 标准库中的打印宏,用于将内容输出到终端并自动换行。\x1b:表示 ASCII 中的「转义字符(ESC)」,是所有 ANSI 控制序列的起始标志(也可写作\033)。[31m:ANSI 颜色控制码,31代表「前景色(文字颜色)为红色」,m是控制码的结束符。-> 红色:实际要显示的文本内容,会被前面的[31m染成红色。\x1b[0m:ANSI 重置控制码,0代表恢复终端默认样式(包括颜色、字体等),避免后续文本继续继承红色。
可便捷使用的有 0~7 一共 8 种颜色,3 开头表示文字颜色,如下所示。你可以通过代码把它们打印一下:
前景色(文字颜色):
| 颜色 | 标准 | 亮色 | 示例 |
|---|---|---|---|
| 黑色 | 30 | 90 | \x1b[30m黑色\x1b[0m |
| 红色 | 31 | 91 | \x1b[31m红色\x1b[0m |
| 绿色 | 32 | 92 | \x1b[32m绿色\x1b[0m |
| 黄色 | 33 | 93 | \x1b[33m黄色\x1b[0m |
| 蓝色 | 34 | 94 | \x1b[34m蓝色\x1b[0m |
| 紫色 | 35 | 95 | \x1b[35m紫色\x1b[0m |
| 青色 | 36 | 96 | \x1b[36m青色\x1b[0m |
| 白色 | 37 | 97 | \x1b[37m白色\x1b[0m |

fn main() {
println!("=== 8种基础颜色演示 ===");
println!("\x1b[30m黑色0\x1b[0m");
println!("\x1b[31m红色1\x1b[0m");
println!("\x1b[32m绿色2\x1b[0m");
println!("\x1b[33m黄色3\x1b[0m");
println!("\x1b[34m蓝色4\x1b[0m");
println!("\x1b[35m紫色5\x1b[0m");
println!("\x1b[36m青色6\x1b[0m");
println!("\x1b[37m白色7\x1b[0m");
}
3. 使用背景色
如果你想为文字背景着色,可以使用 4 开头的 8 个颜色,效果如下:

fn main() {
println!("=== 8种基础颜色背景演示 ===");
println!("\x1b[40m黑色0\x1b[0m");
println!("\x1b[41m红色1\x1b[0m");
println!("\x1b[42m绿色2\x1b[0m");
println!("\x1b[43m黄色3\x1b[0m");
println!("\x1b[44m蓝色4\x1b[0m");
println!("\x1b[45m紫色5\x1b[0m");
println!("\x1b[46m青色6\x1b[0m");
println!("\x1b[47m白色7\x1b[0m");
}
4. 使用 24 位真彩色
现在来到最精彩的部分了!传统的 8 种颜色还不够用?那我们来玩点更高级的——RGB 真彩色!
这就像是从蜡笔升级到了数位绘画板,3 个 8 位 的 int 值,可以提供 1600 万种颜色可以选择!格式是:\x1b[38;2;r;g;b;m

fn main() {
println!("=== RGB 色值 ===");
println!("\x1b[38;2;255;0;0m纯红色\x1b[0m");
println!("\x1b[38;2;0;255;0m纯绿色\x1b[0m");
println!("\x1b[38;2;255;255;0m纯黄色\x1b[0m");
println!("\x1b[38;2;253;156;39m橙色\x1b[0m");
}
到这里,文章开始的小目标就非常容易了,只要对每个字符,使用不同的 rgb 颜色输出即可:

pub fn main() {
println!("欢迎来到张风捷特烈的 Rust 之旅 - 硬编码版本:");
print!("\x1b[38;2;255;0;0m欢"); // 红色
print!("\x1b[38;2;255;64;0m迎"); // 橙红色
print!("\x1b[38;2;255;128;0m来"); // 橙色
print!("\x1b[38;2;255;191;0m到"); // 橙黄色
print!("\x1b[38;2;255;255;0m张"); // 黄色
print!("\x1b[38;2;191;255;0m风"); // 黄绿色
print!("\x1b[38;2;128;255;0m捷"); // 浅绿色
print!("\x1b[38;2;64;255;0m特"); // 绿色
print!("\x1b[38;2;0;255;0m烈"); // 纯绿色
print!("\x1b[38;2;0;255;64m的"); // 绿青色
print!("\x1b[38;2;0;255;128m "); // 浅青色
print!("\x1b[38;2;0;255;191mR"); // 青色
print!("\x1b[38;2;0;255;255mu"); // 青蓝色
print!("\x1b[38;2;0;191;255ms"); // 浅蓝色
print!("\x1b[38;2;0;128;255mt"); // 蓝色
print!("\x1b[38;2;0;64;255m "); // 深蓝色
print!("\x1b[38;2;0;0;255m之"); // 纯蓝色
print!("\x1b[38;2;64;0;255m旅"); // 蓝紫色
println!("\x1b[0m");
}
小结:
本篇主要介绍了一下控制台打印输出时色彩的使用:

到这里,其实我们并没接触到任何 rust 的语法。但是能在控制台看到我们熟悉的颜色,以及 rgb 这位老朋友能在这个异国他乡,发挥作用。会不会有种莫名的小激动呢?
接下来,就让颜色伴随我们,一起开启这段 rust 学习的奇妙之旅。
酷色篇 启动 ~
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)