/// Creates a [`Table`] with [`Display`] arguments nested within. /// /// The macros allows several tables to be displayed vertically. /// /// Companion to [`row!`]. /// /// # 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 = col![table1, table2]; /// let new_table_of_clones = col![table1; 3]; /// let columns_and_rows = col![ /// table1, /// row![table2, table3] /// ]; /// ``` /// /// [`row!`]: crate::row /// [`Table`]: crate::Table /// [`Display`]: std::fmt::Display #[macro_export] #[cfg_attr(docsrs, doc(cfg(feature = "macros")))] macro_rules! col { // Vertical ( $($table:expr), * $(,)? ) => {{ let mut builder = $crate::builder::Builder::default(); $( builder.push_record([$table.to_string()]); )* builder.build() }}; // Duplicate single item ( $table:expr; $N:expr) => {{ let mut builder = $crate::builder::Builder::default(); let n = $N; if n > 0 { let t = $table.to_string(); for _ in 0..$N { builder.push_record([t.clone()]); } } builder.build() }}; }