1pub 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}