Struct tabled::settings::Concat

source ·
pub struct Concat { /* private fields */ }
Available on crate feature std only.
Expand description

Concat concatenates tables along a particular axis [Horizontal | Vertical]. It doesn’t do any key or column comparisons like SQL’s join does.

When the tables has different sizes, empty cells will be created by default.

Concat in horizontal mode has similar behaviour to tuples (a, b). But it behaves on tables rather than on an actual data.

Concat DOES NOT handle style merge and other configuration of 2nd table, it just uses 1st one as a bases.

Example

use tabled::{Table, Tabled, settings::{Style, Concat}};

#[derive(Tabled)]
struct Message {
    id: &'static str,
    text: &'static str,
}

#[derive(Tabled)]
struct Department(#[tabled(rename = "department")] &'static str);

let messages = [
    Message { id: "0", text: "Hello World" },
    Message { id: "1", text: "Do do do something", },
];

let departments = [
    Department("Admins"),
    Department("DevOps"),
    Department("R&D"),
];

let mut table = Table::new(messages);
table
    .with(Concat::horizontal(Table::new(departments)))
    .with(Style::extended());

assert_eq!(
    table.to_string(),
    concat!(
        "╔════╦════════════════════╦════════════╗\n",
        "║ id ║ text               ║ department ║\n",
        "╠════╬════════════════════╬════════════╣\n",
        "║ 0  ║ Hello World        ║ Admins     ║\n",
        "╠════╬════════════════════╬════════════╣\n",
        "║ 1  ║ Do do do something ║ DevOps     ║\n",
        "╠════╬════════════════════╬════════════╣\n",
        "║    ║                    ║ R&D        ║\n",
        "╚════╩════════════════════╩════════════╝",
    )
)

Implementations§

source§

impl Concat

source

pub fn vertical(table: Table) -> Self

Concatenate 2 tables horizontally (along axis=0)

source

pub fn horizontal(table: Table) -> Self

Concatenate 2 tables vertically (along axis=1)

source

pub fn default_cell(self, cell: impl Into<Cow<'static, str>>) -> Self

Sets a cell’s content for cases where 2 tables has different sizes.

Trait Implementations§

source§

impl Debug for Concat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<R, D, C> TableOption<R, C, D> for Concat

source§

fn change(self, records: &mut R, _: &mut C, _: &mut D)

The function modificaties of records and a grid configuration.
source§

fn hint_change(&self) -> Option<Entity>

A hint whether an TableOption is going to change table layout. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.