summaryrefslogtreecommitdiffstats
path: root/vendor/tabled/examples/split.rs
blob: d8e6c679af950c9711f38474a26d1d1137e88259 (plain)
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
//! This example demonstrates using the [`Split`] [`TableOption`] to
//! transform a [`Table`] display in multiple ways.
//!
//! * Several configurations are available to customize a [`Split`] instruction:
//!     * [`Index`](usize)
//!     * [`Behavior`]
//!     * [`Direction`]
//!     * [`Display`]

use std::iter::FromIterator;
use tabled::{
    col, row,
    settings::{split::Split, style::Style, Padding},
    Table,
};

fn main() {
    let mut table = Table::from_iter(['a'..='z']);
    table.with(Style::modern());

    let table_1 = table.clone().with(Split::column(12)).clone();
    let table_2 = table_1.clone().with(Split::column(2).zip()).to_string();
    let table_3 = table_1.clone().with(Split::column(2).concat()).to_string();
    let table_4 = table_1.clone().with(Split::row(2).zip()).to_string();
    let table_5 = table_1.clone().with(Split::row(2).concat()).to_string();

    let mut table = col![
        table,
        row![
            table_1,
            table_2,
            table_3,
            col![table_4, table_5]
                .with(Style::blank())
                .with(Padding::zero())
        ]
        .with(Style::blank())
        .with(Padding::zero()),
    ];
    table.with(Style::blank());

    println!("{table}");
}