//! This example demonstrates using [`papergrid`] without [The Rust Standard Library](std). //! //! * Note the missing, pre-built [`Dimension`] implementations requiring manual design. use papergrid::{ config::compact::CompactConfig, config::{AlignmentHorizontal, Borders, Indent, Sides}, dimension::Dimension, grid::compact::CompactGrid, records::IterRecords, }; fn main() { let data = [ ["Papergrid", "is a library", "for printing tables", "!"], [ "Just like this", "NOTICE", "that multiline is not supported", "H\ne\nl\nl\no", ], ]; let records = IterRecords::new(data, 4, None); let dim = ConstDims(&[20, 15, 40, 3], 4); let cfg = generate_table_config(); let grid = CompactGrid::new(records, &dim, &cfg); println!("{grid}"); } fn generate_table_config() -> CompactConfig { const STYLE: Borders = Borders { top: Some('-'), top_left: Some('+'), top_right: Some('+'), top_intersection: Some('+'), bottom: Some('-'), bottom_left: Some('+'), bottom_right: Some('+'), bottom_intersection: Some('+'), horizontal: Some('-'), left_intersection: Some('+'), right_intersection: Some('+'), vertical: Some('|'), left: Some('|'), right: Some('|'), intersection: Some('+'), }; CompactConfig::default() .set_borders(STYLE) .set_alignment_horizontal(AlignmentHorizontal::Center) .set_padding(Sides::new( Indent::spaced(1), Indent::spaced(1), Indent::spaced(3), Indent::spaced(0), )) } struct ConstDims<'a>(&'a [usize], usize); impl Dimension for ConstDims<'_> { fn get_width(&self, column: usize) -> usize { self.0[column] } fn get_height(&self, _: usize) -> usize { self.1 } }