Macros for creating coloured console output.
To view the colour palette:
cargo run --example println
The following macros are provided:
Like print! (writes to stdout, no newline) |
Like println! (writes to stdout, with newline) |
||
---|---|---|---|
Normal Colour | Dark Colour | Normal Colour | Dark Colour |
black! |
N/A | black_ln! |
N/A |
red! |
dark_red! |
red_ln! |
dark_red_ln! |
green! |
dark_green! |
green_ln! |
dark_green_ln! |
yellow! |
dark_yellow! |
yellow_ln! |
dark_yellow_ln! |
blue! |
dark_blue! |
blue_ln! |
dark_blue_ln! |
magenta! |
dark_magenta! |
magenta_ln! |
dark_magenta_ln! |
cyan! |
dark_cyan! |
cyan_ln! |
dark_cyan_ln! |
grey! |
dark_grey! |
grey_ln! |
dark_grey_ln! |
gray! |
dark_gray! |
gray_ln! |
dark_gray_ln! |
white! |
N/A | white_ln! |
N/A |
Like eprint! (writes to stderr, no newline) |
Like eprintln! (writes to stderr, with newline) |
||
---|---|---|---|
Normal Colour | Dark Colour | Normal Colour | Dark Colour |
e_black! |
N/A | e_black_ln! |
N/A |
e_red! |
e_dark_red! |
e_red_ln! |
e_dark_red_ln! |
e_green! |
e_dark_green! |
e_green_ln! |
e_dark_green_ln! |
e_yellow! |
e_dark_yellow! |
e_yellow_ln! |
e_dark_yellow_ln! |
e_blue! |
e_dark_blue! |
e_blue_ln! |
e_dark_blue_ln! |
e_magenta! |
e_dark_magenta! |
e_magenta_ln! |
e_dark_magenta_ln! |
e_cyan! |
e_dark_cyan! |
e_cyan_ln! |
e_dark_cyan_ln! |
e_grey! |
e_dark_grey! |
e_grey_ln! |
e_dark_grey_ln! |
e_gray! |
e_dark_gray! |
e_gray_ln! |
e_dark_gray_ln! |
e_white! |
N/A | e_white_ln! |
N/A |
Like write! (no newline) |
Like writeln! (with newline) |
||
---|---|---|---|
Normal Colour | Dark Colour | Normal Colour | Dark Colour |
write_black! |
N/A | write_black_ln! |
N/A |
write_red! |
write_dark_red! |
write_red_ln! |
write_dark_red_ln! |
write_green! |
write_dark_green! |
write_green_ln! |
write_dark_green_ln! |
write_yellow! |
write_dark_yellow! |
write_yellow_ln! |
write_dark_yellow_ln! |
write_blue! |
write_dark_blue! |
write_blue_ln! |
write_dark_blue_ln! |
write_magenta! |
write_dark_magenta! |
write_magenta_ln! |
write_dark_magenta_ln! |
write_cyan! |
write_dark_cyan! |
write_cyan_ln! |
write_dark_cyan_ln! |
write_grey! |
write_dark_grey! |
write_grey_ln! |
write_dark_grey_ln! |
write_gray! |
write_dark_gray! |
write_gray_ln! |
write_dark_gray_ln! |
write_white! |
N/A | write_white_ln! |
N/A |
All of these macros are available with bold formatting by appending _bold
(for example
blue_ln_bold
).
There following macros which use the default foreground colour are also available:
print_bold!
eprint_bold!
ande_print_bold!
println_bold!
andprint_ln_bold!
eprintln_bold!
ande_print_ln_bold!
write_bold!
writeln_bold!
The crate follows the recommendations in
Standard for ANSI Colors in Terminals, meaning that the environment
variables NO_COLOR
and CLICOLOR_FORCE
are respected. The library acts as if CLICOLOR
is set,
so that environment variable has no effect.
The environment variable TERM
is also considered: if set to dumb
, coloured output is disabled,
and if set to any other value, coloured output is enabled.
The order of precedence is NO_COLOR
, followed by CLICOLOR_FORCE
and then TERM
.
Binaries can override these environment variables and the automatic detection of a terminal/tty by
calling force_colour
or force_no_colour
. The binary should call only one of these, and the call
should happen before any potential calls to any of the macros this crate provides.
Libraries should generally never call these functions.
use colour::*;
fn _foo() {
let err: Result<(), u8> = Err(1);
yellow_ln!("Failed on {}", 9);
print!("Error details: ");
dark_red_ln_bold!("{:?}", err);
}
fn main() {
grey_ln!("grey");
grey_ln_bold!("bold grey");
dark_grey_ln!("dark grey");
dark_grey_ln_bold!("bold dark grey");
red_ln!("red");
red_ln_bold!("bold red");
dark_red_ln!("dark red");
dark_red_ln_bold!("bold dark red");
green_ln!("green");
green_ln_bold!("bold green");
dark_green_ln!("dark green");
dark_green_ln_bold!("bold dark green");
yellow_ln!("yellow");
yellow_ln_bold!("bold yellow");
dark_yellow_ln!("dark yellow");
dark_yellow_ln_bold!("bold dark yellow");
blue_ln!("blue");
blue_ln_bold!("bold blue");
dark_blue_ln!("dark blue");
dark_blue_ln_bold!("bold dark blue");
magenta_ln!("magenta");
magenta_ln_bold!("bold magenta");
dark_magenta_ln!("dark magenta");
dark_magenta_ln_bold!("bold dark magenta");
cyan_ln!("cyan");
cyan_ln_bold!("bold cyan");
dark_cyan_ln!("dark cyan");
dark_cyan_ln_bold!("bold dark cyan");
black_ln!("black");
black_ln_bold!("bold black");
white_ln!("white");
white_ln_bold!("bold white");
println!("default colour");
println_bold!("bold default colour");
}
The crate can be compiled with Rust versions 1.70.0 and newer.
colour
is distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-MIT and LICENSE-APACHE for details.