1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
/// A drop-in replacement for `std::format!`, which can optionally accept a an
/// existing `String` buffer.
///
/// ```rust
/// use format_buf::format;
///
/// let mut buf = format!("Roses are {},\n", "red");
/// let () = format!(buf, "Violets are {}.", "blue");
/// assert_eq!(buf, "\
/// Roses are red,\n\
/// Violets are blue.\
/// ")
/// ```
#[macro_export]
macro_rules! format {
() => (::std::format!());
($lit:literal $($arg:tt)*) => (::std::format!($lit $($arg)*));
($buf:expr, $lit:literal $($arg:tt)*) => {
{ use ::std::fmt::Write as _; let _ = ::std::write!($buf, $lit $($arg)*); }
};
}