# Fansi This crate allows developers to add color to their terminal output. Here is an example to make text bold: ```rust use fansi::{style::AnsiStyle, string::AnsiString}; // Create style. let style = vec![AnsiStyle::Bold]; // Create text with style. let text = AnsiString::with_styles_vec("world!", style); // Print text. println!("Hello, {}", text); ``` Here is another example to make the foreground text green: ```rust use crate::{color::AnsiColor, style::AnsiStyle, string::AnsiString}; // Create style. let style = vec![AnsiStyle::ForegroundColor(AnsiColor::Green)]; // Create text with style. let text = AnsiString::with_styles_vec("world!", style); // Print text. println!("Hello, {}", text); ``` ## Pre-Computing Style Strings When writing code such as the above examples, it is important to note that using raw arrays/vectors of styles is sub-optimal due to the styles being converted to strings and joined when creating the `AnsiString`. If performance is important for your application and the above method is not acceptable, an `AnsiStyleContainer` struct is provided which takes in styles and compiles them into a `String` internally. The container can then be applied to any `String` and re-used over and over as shown below: ```rust // Create styles. let style = vec![AnsiStyle::ForegroundColor(AnsiColor::Green)]; // Create container. let container = AnsiStyleContainer::new(style); // Apply container's compiled style string to text. let text = container.apply("world!"); // Print text. println!("Hello, {}", text); ``` ## Windows Usage For windows, you will need to do an extra step to enable ANSI support in your Powershell and Command Prompt terminals: ```rust let result: Result<(), i32> = enable_ansi_support(); ```