use tabled::{
settings::{
style::{HorizontalLine, Style, VerticalLine},
Alignment,
},
Table, Tabled,
};
#[derive(Tabled)]
struct CodeEditor {
name: String,
developer: String,
first_release: usize,
}
impl CodeEditor {
fn new(name: &str, first_release: usize, developer: &str) -> Self {
Self {
first_release,
name: name.to_string(),
developer: developer.to_string(),
}
}
}
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, Alignment::center()));
println!("{table}");
}