use derive_more::Constructor;
use std::fmt::{Display, Error as FmtError, Formatter};
use tracing::Level;
#[derive(Constructor)]
pub struct Status<T, E>(Result<T, E>);
impl<T, E> Status<T, E> {
#[must_use]
pub const fn level(&self) -> Level {
if self.0.is_ok() { Level::INFO } else { Level::WARN }
}
}
impl<T, E: Display> Display for Status<T, E> {
fn fmt(&self, formatter: &mut Formatter) -> Result<(), FmtError> {
match &self.0 {
Ok(_ok) => "ok".fmt(formatter),
Err(err) => std::write!(formatter, "error: {err}"),
}
}
}