How do I output colored text to the terminal using Rust? I've tried using the special escape characters that I found in this python answer, but they just print literally. Here is my code:
fn main() {
println!("\033[93mError\033[0m");
}
How do I output colored text to the terminal using Rust? I've tried using the special escape characters that I found in this python answer, but they just print literally. Here is my code:
fn main() {
println!("\033[93mError\033[0m");
}
You can use the colored
crate to do this. Here is a simple example. with multiple colors and formats:
use colored::Colorize;
fn main() {
println!(
"{}, {}, {}, {}, {}, {}, and some normal text.",
"Bold".bold(),
"Red".red(),
"Yellow".yellow(),
"Green Strikethrough".green().strikethrough(),
"Blue Underline".blue().underline(),
"Purple Italics".purple().italic()
);
}
Sample color output:
Each of the format functions (red()
, italics()
, etc.) can be used on its own as well as in combination with others. But if you use colors in combination with each other, only the last color to be set shows.
Rust doesn't have octal escape sequences. You have to use hexadecimal:
println!("\x1b[93mError\x1b[0m");
See also https://github.com/rust-lang/rust/issues/30491.
What happens, and the reason the compiler does not complain, is that \0
is a valid escape sequence in Rust - and represents the NULL character (ASCII code 0). It is just that Rust, unlike C (and Python), does not allow you to specify octal number after that. So it considers the 33
to be normal characters to print.
This works for me:
cargo add inline_colorization
and in main.rs:
use inline_colorization::*;
fn main() {
println!("Lets the user {color_red}colorize{color_reset} the and {style_underline}style the output{style_reset} text using inline variables");
}
I am the creator of the mentioned rust crate.