Search code examples
rustterminaloutput

How do I print colored text to the terminal in Rust?


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

Solution

  • 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.