blob: 2da0f36d96f891d5539d5b7c263006c4eba8b025 [file] [log] [blame]
//! This example demonstrates using the [`Height`] [`TableOption`] for adjusting
//! the height of a [`Table`].
//!
//! * [`Height`] supports three key features:
//! * [`CellHeightIncrease`] spreads new whitespace between the [`Table`]
//! rows up to the specified line count.
//! * [`CellHeightLimit`] removes lines from the [`Table`] rows fairly, until
//! it has no choice but to remove single-line-rows entirely, bottom up.
//! * [`HeightList`] accepts an array of height specifications that are applied
//! to the rows with the same index. This is helpful for granularly specifying individual
//! row heights irrespective of [`Padding`] or [`Margin`].
use tabled::{
settings::{peaker::PriorityMax, Height, Style},
Table,
};
fn main() {
let data = vec![("Multi\nline\nstring", 123), ("Single line", 234)];
let mut table = Table::builder(data).build();
table.with(Style::markdown());
println!("Table\n");
println!("{table}");
println!();
let table_ = table.clone().with(Height::increase(10)).to_string();
println!("Table increase height to 10\n");
println!("{table_}");
println!();
let table_ = table
.clone()
.with(Height::limit(4).priority::<PriorityMax>())
.to_string();
println!("Table decrease height to 4\n");
println!("{table_}");
let table_ = table
.clone()
.with(Height::limit(0).priority::<PriorityMax>())
.to_string();
println!("Table decrease height to 0\n");
println!("{table_}");
}