Expand description
§Colour
Macros for creating coloured console output.
§General
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!
§Configuration
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
.
§Usage in Binaries
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.
§Example
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");
}
§Minimum Rust Version
The crate can be compiled with Rust versions 1.70.0 and newer.
§License
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.
Macros§
- black
- black_
bold - black_
ln - black_
ln_ bold - blue
- blue_
bold - blue_ln
- blue_
ln_ bold - cyan
- cyan_
bold - cyan_ln
- cyan_
ln_ bold - dark_
blue - dark_
blue_ bold - dark_
blue_ ln - dark_
blue_ ln_ bold - dark_
cyan - dark_
cyan_ bold - dark_
cyan_ ln - dark_
cyan_ ln_ bold - dark_
gray - dark_
gray_ bold - dark_
gray_ ln - dark_
gray_ ln_ bold - dark_
green - dark_
green_ bold - dark_
green_ ln - dark_
green_ ln_ bold - dark_
grey - dark_
grey_ bold - dark_
grey_ ln - dark_
grey_ ln_ bold - dark_
magenta - dark_
magenta_ bold - dark_
magenta_ ln - dark_
magenta_ ln_ bold - dark_
red - dark_
red_ bold - dark_
red_ ln - dark_
red_ ln_ bold - dark_
yellow - dark_
yellow_ bold - dark_
yellow_ ln - dark_
yellow_ ln_ bold - e_black
- e_
black_ bold - e_
black_ ln - e_
black_ ln_ bold - e_blue
- e_
blue_ bold - e_
blue_ ln - e_
blue_ ln_ bold - e_cyan
- e_
cyan_ bold - e_
cyan_ ln - e_
cyan_ ln_ bold - e_
dark_ blue - e_
dark_ blue_ bold - e_
dark_ blue_ ln - e_
dark_ blue_ ln_ bold - e_
dark_ cyan - e_
dark_ cyan_ bold - e_
dark_ cyan_ ln - e_
dark_ cyan_ ln_ bold - e_
dark_ gray - e_
dark_ gray_ bold - e_
dark_ gray_ ln - e_
dark_ gray_ ln_ bold - e_
dark_ green - e_
dark_ green_ bold - e_
dark_ green_ ln - e_
dark_ green_ ln_ bold - e_
dark_ grey - e_
dark_ grey_ bold - e_
dark_ grey_ ln - e_
dark_ grey_ ln_ bold - e_
dark_ magenta - e_
dark_ magenta_ bold - e_
dark_ magenta_ ln - e_
dark_ magenta_ ln_ bold - e_
dark_ red - e_
dark_ red_ bold - e_
dark_ red_ ln - e_
dark_ red_ ln_ bold - e_
dark_ yellow - e_
dark_ yellow_ bold - e_
dark_ yellow_ ln - e_
dark_ yellow_ ln_ bold - e_gray
- e_
gray_ bold - e_
gray_ ln - e_
gray_ ln_ bold - e_green
- e_
green_ bold - e_
green_ ln - e_
green_ ln_ bold - e_grey
- e_
grey_ bold - e_
grey_ ln - e_
grey_ ln_ bold - e_
magenta - e_
magenta_ bold - e_
magenta_ ln - e_
magenta_ ln_ bold - e_
print_ bold - e_
print_ ln_ bold - e_red
- e_
red_ bold - e_
red_ ln - e_
red_ ln_ bold - e_white
- e_
white_ bold - e_
white_ ln - e_
white_ ln_ bold - e_
yellow - e_
yellow_ bold - e_
yellow_ ln - e_
yellow_ ln_ bold - eprint_
bold - eprintln_
bold - gray
- gray_
bold - gray_ln
- gray_
ln_ bold - green
- green_
bold - green_
ln - green_
ln_ bold - grey
- grey_
bold - grey_ln
- grey_
ln_ bold - magenta
- magenta_
bold - magenta_
ln - magenta_
ln_ bold - print_
bold - print_
ln_ bold - println_
bold - red
- red_
bold - red_ln
- red_
ln_ bold - white
- white_
bold - white_
ln - white_
ln_ bold - write_
black - write_
black_ bold - write_
blue - write_
blue_ bold - write_
bold - write_
cyan - write_
cyan_ bold - write_
dark_ blue - write_
dark_ blue_ bold - write_
dark_ cyan - write_
dark_ cyan_ bold - write_
dark_ gray - write_
dark_ gray_ bold - write_
dark_ green - write_
dark_ green_ bold - write_
dark_ grey - write_
dark_ grey_ bold - write_
dark_ magenta - write_
dark_ magenta_ bold - write_
dark_ red - write_
dark_ red_ bold - write_
dark_ yellow - write_
dark_ yellow_ bold - write_
gray - write_
gray_ bold - write_
green - write_
green_ bold - write_
grey - write_
grey_ bold - write_
magenta - write_
magenta_ bold - write_
red - write_
red_ bold - write_
white - write_
white_ bold - write_
yellow - write_
yellow_ bold - writeln_
black - writeln_
black_ bold - writeln_
blue - writeln_
blue_ bold - writeln_
bold - writeln_
cyan - writeln_
cyan_ bold - writeln_
dark_ blue - writeln_
dark_ blue_ bold - writeln_
dark_ cyan - writeln_
dark_ cyan_ bold - writeln_
dark_ gray - writeln_
dark_ gray_ bold - writeln_
dark_ green - writeln_
dark_ green_ bold - writeln_
dark_ grey - writeln_
dark_ grey_ bold - writeln_
dark_ magenta - writeln_
dark_ magenta_ bold - writeln_
dark_ red - writeln_
dark_ red_ bold - writeln_
dark_ yellow - writeln_
dark_ yellow_ bold - writeln_
gray - writeln_
gray_ bold - writeln_
green - writeln_
green_ bold - writeln_
grey - writeln_
grey_ bold - writeln_
magenta - writeln_
magenta_ bold - writeln_
red - writeln_
red_ bold - writeln_
white - writeln_
white_ bold - writeln_
yellow - writeln_
yellow_ bold - yellow
- yellow_
bold - yellow_
ln - yellow_
ln_ bold
Structs§
- Already
Set - Error returned when forcing colour on or off, if it has already been initialised to a different value.
Functions§
- force_
color - As per
force_colour
. - force_
colour - Inject ANSI colour escape codes into the output, regardless of the value of the
NO_COLOR
environment variable, or whether the output terminal (if any) supports them. - force_
no_ color - As per
force_no_colour
. - force_
no_ colour - Do not inject ANSI colour escape codes into the output, regardless of the value of the
CLICOLOR_FORCE
environment variable, or whether the output terminal (if any) supports them.