blob: 0388e6264705416c6e62e304914cec6b9749de70 [file] [log] [blame]
//! This example demonstrates how to set column names on a top horizontal line.
//!
//! It sets a `clickhouse` like table style (first seen on).
use std::iter::repeat;
use tabled::{
grid::config::AlignmentHorizontal,
settings::{themes::ColumnNames, Color, Style},
Table, Tabled,
};
#[derive(Debug, Tabled)]
struct Function {
declaration: String,
name: String,
return_type: String,
}
impl Function {
fn new(decl: &str, name: &str, ret_type: &str) -> Self {
Self {
declaration: decl.to_string(),
name: name.to_string(),
return_type: ret_type.to_string(),
}
}
}
fn main() {
let data = vec![
Function::new(
"struct stack *stack_create(int)",
"stack_create",
"struct stack *",
),
Function::new(
"void stack_destroy(struct stack *)",
"stack_destroy",
"void",
),
Function::new(
"int stack_put(struct stack *, vm_offset_t)",
"stack_put",
"int",
),
Function::new(
"void stack_copy(const struct stack *, struct stack *)",
"stack_copy",
"void",
),
];
let mut table = Table::new(data);
table.with(Style::modern().remove_horizontal()).with(
ColumnNames::default()
.set_colors(repeat(Color::BOLD | Color::BG_BLUE | Color::FG_WHITE).take(3))
.set_alignment(AlignmentHorizontal::Center),
);
println!("{table}");
}