#[doc = include_str!("../../examples/doc_macro_show.rs")]
#[macro_export]
macro_rules! show {
($expr:expr $(, sep=$sep:expr)? $(, end=$end:expr)? $(,)? $(=> $buf:expr)?) => {
$crate::unwrap!(|| -> ::std::io::Result<()> {
$crate::write(
&$expr,
&mut $crate::argument_or_default!($($buf)?, $crate::stdout()),
$crate::argument_or_default!($(&$sep)?, $crate::DefaultSeparator),
$crate::argument_or_default!($(&$end)?, "\n"),
)?;
Ok(())
}())
};
($expr:expr, end=$end:expr $(, sep=$sep:expr)? $(,)? $(=> $buf:expr)?) => {
$crate::unwrap!(|| -> ::std::io::Result<()> {
$crate::write(
&$expr,
&mut $crate::argument_or_default!($($buf)?, $crate::stdout()),
$crate::argument_or_default!($(&$sep)?, $crate::DefaultSeparator),
&$end,
)?;
Ok(())
}())
};
}
#[macro_export]
macro_rules! argument_or_default {
($arg:expr, $default:expr $(,)?) => {
$arg
};
(, $default:expr $(,)?) => {
$default
};
}
#[macro_export]
macro_rules! impl_write_into_for_display {
($($ty:ty)*) => {
$(
impl $crate::WriteInto for $ty {
#[inline]
fn try_write_into_with_sep<S: ::std::io::Write + ?::std::marker::Sized>(&self, s: &mut S, _sep: impl $crate::Separators) -> ::std::io::Result<()> {
::std::write!(s, "{}", self)
}
}
impl $crate::dimension::Dimension for $ty {
const DIMENSION: usize = 0;
const SPACE: bool = true;
}
)*
};
}