tabled/macros/row.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
/// Creates a [`Table`] with [`Display`] arguments nested within.
///
/// The macros allows several tables to be displayed horizontally.
///
/// Companion to [`col!`].
///
/// # Examples
/// ```rust,no_run
/// # use tabled::{row, col, Table};
/// # let (table1, table2, table3) = (Table::new(&[String::new()]), Table::new(&[String::new()]), Table::new(&[String::new()]));
/// let new_table = row![table1, table2];
/// let new_table_of_clones = row![table1; 3];
/// let rows_and_columns = row![
/// table1,
/// col![table2, table3]
/// ];
/// ```
///
/// [`col!`]: crate::col
/// [`Table`]: crate::Table
/// [`Display`]: std::fmt::Display
#[macro_export]
#[cfg_attr(docsrs, doc(cfg(feature = "macros")))]
macro_rules! row {
// Horizontal Display
( $($table:expr), * $(,)? ) => {{
let mut builder = $crate::builder::Builder::default();
builder.add_record([ $($table.to_string(),)* ]);
builder.build()
}};
// Duplicate single item
( $table:expr; $N:expr) => {{
let mut builder = $crate::builder::Builder::default();
let duplicates = vec![$table.to_string(); $N];
builder.add_record(duplicates);
builder.build()
}};
}