3 个版本
| 0.1.2 | 2020年5月31日 |
|---|---|
| 0.1.1 | 2020年4月19日 |
| 0.1.0 | 2020年4月1日 |
#438 in 命令行界面
118,267 个月下载量
用于 69 个 Crates(直接使用 2 个)
45KB
563 代码行
yansi-term

改编自
rust-ansi-term
重构以使用 fmt::Display 和 FnOnce(&mut fmt::Formatter) -> fmt::Result
这是一个控制颜色和格式的库,例如红色粗体文本或蓝色下划线文本。
查看 Rustdoc
安装
这个 crate 与 Cargo 一起工作。将以下内容添加到您的 Cargo.toml 依赖项部分
[dependencies]
yansi-term = "0.1"
基本用法
在这个 crate 中,您需要关注两个主要类型:Style 和 Colour。
Style 包含样式信息:前景色和背景色,文本是否应该加粗、闪烁或其他属性。The Colour 枚举表示可用的颜色。
Color 也可以作为 Colour 的别名。
要格式化字符串,请调用 Style 或 Colour 上的 paint 方法,传入要格式化的字符串作为参数。例如,下面是如何获取一些红色文本
use yansi_term::Colour::Red;
println!("This is in red: {}", Red.paint("a red string"));
Windows 10 用户注意:在 Windows 10 上,应用程序必须首先启用 ANSI 支持
let enabled = yansi_term::enable_ansi_support();
粗体、下划线、背景和其他样式
对于比纯前景颜色改变更复杂的情况,您需要构建Style值本身,而不是从Colour开始。您可以通过使用Style的新实例创建的方法链来实现,该实例使用Style::new()创建。每个方法创建一个新的样式,该样式具有特定的属性集。例如
use yansi_term::Style;
println!("How about some {} and {}?",
Style::new().bold().paint("bold"),
Style::new().underline().paint("underline"));
为了简洁,这些方法也针对Colour值进行了实现,因此您可以在不开始于空的Style值的情况下为您的样式指定前景颜色
use yansi_term::Colour::{Blue, Yellow};
println!("Demonstrating {} and {}!",
Blue.bold().paint("blue bold"),
Yellow.underline().paint("yellow underline"));
println!("Yellow on blue: {}", Yellow.on(Blue).paint("wow!"));
您可以使用的完整样式列表如下:bold、dimmed、italic、underline、blink、reverse、hidden和用于背景颜色的on。
在某些情况下,您可能发现更改现有Style的前景颜色比从适当的Colour开始更容易。您可以使用fg方法来完成此操作
use yansi_term::Style;
use yansi_term::Colour::{Blue, Cyan, Yellow};
println!("Yellow on blue: {}", Style::new().on(Blue).fg(Yellow).paint("yow!"));
println!("Also yellow on blue: {}", Cyan.on(Blue).fg(Yellow).paint("zow!"));
您可以使用normal方法将Colour转换为Style。
use yansi_term::Style;
use yansi_term::Colour::Red;
Red.normal().paint("yet another red string");
Style::default().paint("a completely regular string");
扩展颜色
您可以通过使用Colour::Fixed变体来访问256种颜色的扩展范围,该变体接受要使用的颜色数字作为参数。这可以在您使用Colour的任何地方使用。
use yansi_term::Colour::Fixed;
Fixed(134).paint("A sort of light purple");
Fixed(221).on(Fixed(124)).paint("Mustard in the ketchup");
这些值的前16个与正常和加粗的标准颜色变体相同。您可以使用这些作为Fixed颜色,但这不会带来任何好处。
您还可以通过使用Colour::RGB变体来访问完整的24位颜色,该变体接受红色、绿色和蓝色的独立的u8参数
use yansi_term::Colour::RGB;
RGB(70, 130, 180).paint("Steel blue");
依赖关系
~0-350KB