use core::fmt;
#[macro_export]
macro_rules! lazy_format {
($($tt:tt)+) => {
$crate::macros::LazyFormat::new(|f| write!(f, $($tt)+))
};
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct LazyFormat<F>(F);
impl<F: Fn(&mut fmt::Formatter) -> fmt::Result> LazyFormat<F> {
#[inline]
pub fn new(callback: F) -> Self {
Self(callback)
}
}
impl<F: Fn(&mut fmt::Formatter) -> fmt::Result> fmt::Display for LazyFormat<F> {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
(self.0)(f)
}
}