anstyle_wincon/
ansi.rs

1//! Low-level ANSI-styling
2
3/// Write ANSI colored text to the stream
4pub fn write_colored<S: std::io::Write + ?Sized>(
5    stream: &mut S,
6    fg: Option<anstyle::AnsiColor>,
7    bg: Option<anstyle::AnsiColor>,
8    data: &[u8],
9) -> std::io::Result<usize> {
10    let non_default = fg.is_some() || bg.is_some();
11
12    if non_default {
13        if let Some(fg) = fg {
14            write!(stream, "{}", fg.render_fg())?;
15        }
16        if let Some(bg) = bg {
17            write!(stream, "{}", bg.render_bg())?;
18        }
19    }
20    let written = stream.write(data)?;
21    if non_default {
22        write!(stream, "{}", anstyle::Reset.render())?;
23    }
24    Ok(written)
25}