#终端着色 #终端 #颜色 #命令行工具 #ANSI终端 #无std

无std rust-kxxt-owo-colors

零分配终端着色,让人们的反应是 owo

2个版本 (1个稳定版)

4.0.0 2024年2月14日
4.0.0-rc.12023年10月24日

#377命令行界面

每月 23 次下载
用于 tracexec

MIT 许可证

130KB
2.5K SLoC

这是基于 https://github.com/jam1garner/owo-colors 的分支,并做了一些个人修改

你应该去 https://github.com/jam1garner/owo-colors 查看

颜色

Current Crates.io Version docs-rs MSRV 1.56+ Downloads

一种零分配、与无std兼容的零成本方式,为Rust终端添加颜色,让人们反应是 owo。

支持

  • 所有std/core格式化程序
  • 可选:检查终端是否支持颜色
    • 为CI启用
    • 默认情况下禁用非终端输出
    • 可通过 NO_COLOR/FORCE_COLOR 环境变量覆盖
    • 可通过 set_override 编程方式覆盖
  • 默认无依赖
  • 所有ANSI(4位)和Xterm(8位)颜色均采用精心挑选的名称
  • 支持RGB颜色
  • 通过泛型在编译时设置颜色,或在运行时通过值设置
  • 所有ANSI颜色
    • 基本支持(普通和亮色变体)
    • Xterm支持(高兼容性和256颜色)
    • 真彩色支持(现代,48位颜色)
  • 样式(下划线、删除线等)

owo-colors基本上是 colored 的替代品,允许在无std环境中使用colored。不需要分配或依赖,因为嵌入式系统也应该很漂亮。

在Cargo.toml中添加

owo-colors = "3"

示例

use owo_colors::OwoColorize;

fn main() {
    // Foreground colors
    println!("My number is {:#x}!", 10.green());
    // Background colors
    println!("My number is not {}!", 4.on_red());
}

泛型颜色

use owo_colors::OwoColorize;
use owo_colors::colors::*;

fn main() {
    // Generically color
    println!("My number might be {}!", 4.fg::<Black>().bg::<Yellow>());
}

样式化

use owo_colors::OwoColorize;

println!("{}", "strikethrough".strikethrough());

仅在支持的终端上应用样式

use owo_colors::{OwoColorize, Stream::Stdout};

println!(
    "{}",
    "colored blue if a supported terminal"
        .if_supports_color(Stdout, |text| text.bright_blue())
);

支持 NO_COLOR / FORCE_COLOR 环境变量,检查是否是 tty,检查是否在 CI 环境中运行(因此可能支持颜色),并检查正在使用的终端。(注意:需要 supports-colors 功能)

依赖项

~0–8MB
~44K SLoC