#colored #terminal #ansi

colorable

An easy way to get colored console output

5 releases

0.1.4 Oct 16, 2020
0.1.3 Oct 8, 2020
0.1.2 Oct 8, 2020
0.1.1 Oct 8, 2020
0.1.0 Sep 1, 2020

#118 in Command-line interface

Custom license

19KB
563 lines

colorable

colorable is a library that makes printing colored output to the console easy.

Get started

Adding colorable as a dependency

[dependecies]
colorable = "0.1"

That's the only dependency you need

Usage

colorable allows you to style console output using ANSI escape sequences. It allows this for any types that implement std::fmt::Display or std::fmt::Debug.

How to use on types that implement std::fmt::Display

Basic example:

use colorable::*;

fn main() {
    println!("{}", 1.green());
    println!("{}", 2.blue().bold());
    println!("{}", 3.with_fg_color(124).italic());
}

This will produce a green 1, a bold blue 2 and a red italic 3. The 124 in the last line corresponds to the ANSI color code for this shade of red. You can also set the background of the output like so:

use colorable::*;

fn main() {
    println!("{}", 1.magenta().with_bg_color(3));
}

This will produce a magenta 3 on blue background. Currently setting the background only works through explicit color codes which you can find here

How to use on types that implement std::fmt::Debug

The API for using colors and styles on objects that implement std::fmt::Debug is exactly the same as it for std::fmt::Display, except that every method has a _dbg suffix. This is done to avoid name clashing on types that implement both std::fmt::Debug and std::fmt::Display. The example from above could look something like this:

use colorable::*;

fn main() {
    let v = vec![1, 2, 3];
    println!("{:?}", v.yellow_dbg());
    println!("{:?}", v.cyan_dbg().bold_dbg());
}

NOTE

Neither the Colored nor the ColoredDbg type use any kind of formatting flags. This means that the formatting flags on something like this:

use colorable::*;

fn main() {
    println!("{:#?}", vec![1, 2, 3].dark_cyan_dbg());
}

will simply be ignored and the output won't be pretty printed. If you want to use formatting flags, you can do something like this:

use colorable::*;

fn main() {
    println!("{}", format_args!("{:#?}", vec![1, 2, 3]).dark_cyan());
}

No runtime deps