File: builder.rs

package info (click to toggle)
rust-tabled 0.18.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,408 kB
  • sloc: makefile: 4
file content (27 lines) | stat: -rw-r--r-- 1,081 bytes parent folder | download
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
//! This example demonstrates an alternative method for creating a [`Table`].
//! [`Builder`] is an efficient implementation of the [builder design pattern](https://en.wikipedia.org/wiki/Builder_pattern).
//!
//! > The intent of the Builder design pattern is to separate the construction of a complex object from its representation.
//! > -- <cite>Wikipedia</cite>
//!
//! * Note how [Builder] can be used to define a table's shape manually
//!   and can be populated through iteration if it is mutable. This flexibility
//!   is useful when you don't have direct control over the datasets you intend to [table](tabled).

use tabled::{builder::Builder, settings::Style};

fn main() {
    let oceans = "Atlantic, Pacific, Indian, Southern, Arctic";

    let mut builder = Builder::default();

    builder.push_record(["#", "Ocean"]);
    for (i, ocean) in oceans.split(", ").enumerate() {
        builder.push_record([i.to_string(), ocean.to_string()]);
    }

    let mut table = builder.build();
    table.with(Style::markdown().remove_horizontals());

    println!("{table}");
}