summaryrefslogtreecommitdiffstats
path: root/vendor/tabled/examples/panel.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--vendor/tabled/examples/panel.rs63
1 files changed, 63 insertions, 0 deletions
diff --git a/vendor/tabled/examples/panel.rs b/vendor/tabled/examples/panel.rs
new file mode 100644
index 000000000..343abcd67
--- /dev/null
+++ b/vendor/tabled/examples/panel.rs
@@ -0,0 +1,63 @@
+//! This example demonstrates using the [`Panel`] [`TableOption`] to inject
+//! table-length columns and rows into a [`Table`].
+//!
+//! * [`Panel`] supports four injection options:
+//! * Horizontal | manual index selection
+//! * Vertical | manual index selection
+//! * Header | before first row
+//! * Footer | after last row
+
+use tabled::{
+ settings::{
+ object::Segment,
+ style::{BorderSpanCorrection, Style},
+ Alignment, Modify, Panel, Width,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct Release {
+ version: &'static str,
+ published_date: &'static str,
+ is_active: bool,
+ major_feature: &'static str,
+}
+
+impl Release {
+ const fn new(
+ version: &'static str,
+ published_date: &'static str,
+ is_active: bool,
+ major_feature: &'static str,
+ ) -> Self {
+ Self {
+ version,
+ published_date,
+ is_active,
+ major_feature,
+ }
+ }
+}
+
+const DATA: [Release; 3] = [
+ Release::new("0.2.1", "2021-06-23", true, "#[header(inline)] attribute"),
+ Release::new("0.2.0", "2021-06-19", false, "API changes"),
+ Release::new("0.1.4", "2021-06-07", false, "display_with attribute"),
+];
+
+fn main() {
+ let mut table = Table::new(DATA);
+ table
+ .with(Panel::header("Tabled Releases"))
+ .with(Panel::footer(format!("N - {}", DATA.len())))
+ .with(Panel::vertical(0, "Some text goes here"))
+ .with(Panel::vertical(5, "Some text goes here"))
+ .with(Modify::new((0, 0)).with(Width::wrap(1)))
+ .with(Modify::new((0, 5)).with(Width::wrap(1)))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::modern())
+ .with(BorderSpanCorrection);
+
+ println!("{table}");
+}