//! This example demonstrates creating a nested [`Table`] by instantiating a new //! [`Table`] from a collection of other [`Tables`](Table). //! //! * This third nested [`Table`] example showcases the [`Table::new()`] approach. use tabled::{ settings::{ object::{Cell, Segment}, Alignment, Border, Extract, Highlight, Modify, Panel, Style, }, Table, Tabled, }; #[derive(Tabled)] struct Contribution { author: &'static str, profile: &'static str, } impl Contribution { fn new(author: &'static str, profile: &'static str) -> Self { Self { author, profile } } } fn main() { let committers = [ Contribution::new("kozmod", "https:/github.com/kozmod"), Contribution::new("IsaacCloos", "https:/github.com/IsaacCloos"), ]; let issuers = [Contribution::new( "aharpervc", "https:/github.com/aharpervc", )]; let committers_table = Table::new(committers) .with(Panel::header("Contributors")) .with(Modify::new(Segment::all()).with(Alignment::center())) .to_string(); let issues_table = Table::new(issuers) .with(Panel::header("Issuers")) .with(Modify::new(Segment::all()).with(Alignment::center())) .to_string(); let mut a_welcome_table = Table::new([String::from("Thank You"), committers_table, issues_table]); a_welcome_table .with(Extract::rows(1..)) .with(Style::ascii().remove_horizontal()) .with(Modify::new(Segment::all()).with(Alignment::center())) .with(Highlight::new(Cell::new(0, 0), Border::filled('*'))); println!("{a_welcome_table}"); }