blob: 7158f333f93cdb5e95bd84210e370a07a9e713c2 [file] [log] [blame]
//! This example demonstrates customizing one of the [`tabled`] default [styles](Style)
//! to create a unique [`Table`] display.
//!
//! * Note that all predesigned styles can be configured completely.
//! Styles can also be created from scratch!
//!
//! * Note that adding and removing borders with a [`Style`] theme doesn't affect the
//! number of functional columns and rows.
use tabled::{
settings::{
style::{HorizontalLine, Style, VerticalLine},
Alignment,
},
Table, Tabled,
};
#[derive(Tabled)]
struct CodeEditor {
name: &'static str,
first_release: &'static str,
developer: &'static str,
}
impl CodeEditor {
fn new(name: &'static str, first_release: &'static str, developer: &'static str) -> Self {
Self {
name,
first_release,
developer,
}
}
}
fn main() {
let data = [
CodeEditor::new("Sublime Text 3", "2008", "Sublime HQ"),
CodeEditor::new("Visual Studio Code", "2015", "Microsoft"),
CodeEditor::new("Notepad++", "2003", "Don Ho"),
CodeEditor::new("GNU Emacs", "1984", "Richard Stallman"),
CodeEditor::new("Neovim", "2015", "Vim community"),
];
let theme = Style::modern()
.horizontals([(1, HorizontalLine::inherit(Style::modern()))])
.verticals([(1, VerticalLine::inherit(Style::modern()))])
.remove_horizontal()
.remove_vertical();
let mut table = Table::new(data);
table.with(theme).with(Alignment::left());
println!("{table}");
}