use std::io::{stderr, stdout, Write};
#[derive(Default, Copy, Clone, Debug)]
pub enum Streams {
#[default]
Stdout,
Stderr,
}
impl Streams {
#[must_use = "Stream must be retrieved"]
pub fn get_stream(self) -> Box<dyn Write + Send + Sync> {
match self {
Self::Stdout => Box::new(stdout()),
Self::Stderr => Box::new(stderr()),
}
}
pub fn write_fmt<T>(self, fmt: T)
where
T: std::fmt::Display,
{
write!(self.get_stream(), "{fmt}").expect("error: failed to write to stream");
}
}