logo
Expand description

This crate provides OwoColorize, an extension trait for colorizing a given type.

Example

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());
}

Generically color

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

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

Stylize

use owo_colors::OwoColorize;

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

Only Style on Supported Terminals

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

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

Supports NO_COLOR/FORCE_COLOR environment variables, checks if it’s a tty, checks if it’s running in CI (and thus likely supports color), and checks which terminal is being used. (Note: requires supports-colors feature)

Style Objects

owo-colors also features the ability to create a Style object and use it to apply the same set of colors/effects to any number of things to display.

use owo_colors::{OwoColorize, Style};

let my_style = Style::new()
    .red()
    .on_white()
    .strikethrough();

let text = "red text, white background, struck through";
println!("{}", text.style(my_style));

Modules

Module for drop-in colored support to aid in porting code from colored to owo-colors.

Color types for used for being generic over the color

Different display styles (strikethrough, bold, etc.)

Structs

Transparent wrapper around a type which implements all the formatters the wrapped type does, with the addition of changing the background color. Recommended to be constructed using OwoColorize.

Wrapper around a type which implements all the formatters the wrapped type does, with the addition of changing the background color. Is not recommended unless compile-time coloring is not an option.

A wrapper type which applies both a foreground and background color

Transparent wrapper around a type which implements all the formatters the wrapped type does, with the addition of changing the foreground color. Recommended to be constructed using OwoColorize.

Wrapper around a type which implements all the formatters the wrapped type does, with the addition of changing the foreground color. Is not recommended unless compile-time coloring is not an option.

An error for when the color can not be parsed from a string at runtime

Available RGB colors for use with OwoColorize::color or OwoColorize::on_color

A pre-computed style that can be applied to a struct using OwoColorize::style. Its interface mimicks that of OwoColorize, but instead of chaining methods on your object, you instead chain them on the Style object before applying it.

A wrapper type which applies a Style when displaying the inner type

A collection of Styled items that are displayed in such a way as to minimize the amount of characters that are written when displayed.

A display wrapper which applies a transformation based on if the given stream supports colored terminal output

Enums

Available standard ANSI colors for use with OwoColorize::color or OwoColorize::on_color

Available CSS colors for use with OwoColorize::color or OwoColorize::on_color

An enum describing runtime-configurable colors which can be displayed using FgDynColorDisplay or BgDynColorDisplay, allowing for multiple types of colors to be used at runtime.

A runtime-configurable text effect for use with Style

possible stream sources

Available Xterm colors for use with OwoColorize::color or OwoColorize::on_color

Traits

A trait for describing a type which can be used with FgColorDisplay or BgCBgColorDisplay

A trait describing a runtime-configurable color which can displayed using FgDynColorDisplay or BgDynColorDisplay. If your color will be known at compile time it is recommended you avoid this.

Extension trait for colorizing a type which implements any std formatter (Display, Debug, UpperHex, etc.)

Functions

Set an override value for whether or not colors are supported.

Helper to create Styles more ergonomically

Remove any override value for whether or not colors are supported. This means if_supports_color will resume checking if the given terminal output (Stream) supports colors.

Type Definitions

A helper alias for StyledList for easier usage with alloc::vec::Vec.