#[macro_export]
macro_rules! define_printlike {
( $name:ident, $macro:path, expect, $($args:tt)* ) => {
$crate::_define_printlike_impl!(
($), $name, $macro, expect, $crate::define_writer!($($args)*)
);
};
( $name:ident, $macro:path, try, $($args:tt)* ) => {
$crate::_define_printlike_impl!(
($), $name, $macro, try, $crate::define_try_writer!($($args)*)
);
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! _define_printlike_impl {
( ($d:tt), $name:ident, $macro:path, $handler:tt, $writer:expr ) => {
#[allow(unused_macros)]
macro_rules! $name {
() => {
$crate::write!($macro, $writer, $handler)
};
($d ($d args:tt)+) => {
$crate::write!($macro, $writer, $handler, $d ($d args)+)
};
}
};
}