Skip to main content

Table

Struct Table 

Source
pub struct Table { /* private fields */ }
Available on crate feature document only.
Expand description

Rows of cells under an optional header row.

The table has as many columns as its longest row or its header row. A shorter row gets empty cells. Column marks, such as Self::id_column, choose the role of a column’s plain cells and how it is cut or aligned.

use ctl_core::document::Table;

let table = Table::new(["id", "title", "age"])
    .id_column(0)
    .ellipsis_column(1)
    .numeric_column(2)
    .row(["A-1", "Ship the release", "3"]);
assert_eq!(table.rows().len(), 1);
assert_eq!(table.id_column_index(), Some(0));

Implementations§

Source§

impl Table

Source

pub fn plain() -> Self

Start a table with no header row.

Source

pub fn new(headers: impl IntoIterator<Item = impl Into<Text>>) -> Self

Start a table with one header cell per item of headers.

Source

pub const fn token_column(self, index: usize) -> Self

Draw the plain cells of column index (counted from 0) as Role::Token.

Source

pub const fn id_column(self, index: usize) -> Self

Draw the plain cells of column index (counted from 0) as Role::Id.

Source

pub fn ellipsis_column(self, index: usize) -> Self

Mark column index (counted from 0) as text that may be cut short.

A cell too wide for its column keeps one line and ends in …. The column gives up its width before a column of whole words does. Use it for a title or a summary, never for a value a reader copies out, such as a URL or a path. Call it once per column.

Source

pub fn numeric_column(self, index: usize) -> Self

Mark column index (counted from 0) as numbers.

Every cell of the column, header included, aligns right, so numbers line up on their last digit. Call it once per column.

Source

pub const fn stacked_below(self, width: u16, label_columns: usize) -> Self

Stack each row when the available width is below width cells.

The first label_columns cells of a row form its label line. The remaining cells form the indented description under it. The label cells are drawn as Role::Token.

Source

pub fn row(self, cells: impl IntoIterator<Item = impl Into<Text>>) -> Self

Append a row of cells, one per item.

Source

pub fn headers(&self) -> &[Text]

The header cells, empty for a table with no header row.

Source

pub fn rows(&self) -> &[Vec<Text>]

The body rows, in the order appended.

Source

pub const fn token_column_index(&self) -> Option<usize>

The column set by Self::token_column, if any.

Source

pub const fn id_column_index(&self) -> Option<usize>

The column set by Self::id_column, if any.

Source

pub fn ellipsis_columns(&self) -> &[usize]

Columns marked with Self::ellipsis_column, in the order marked.

Source

pub fn numeric_columns(&self) -> &[usize]

Columns marked with Self::numeric_column, in the order marked.

Source

pub const fn stacked(&self) -> Option<Stacked>

The narrow-layout policy set by Self::stacked_below, if any.

Source

pub fn is_empty(&self) -> bool

Whether the table has no body rows. A header row does not count.

Trait Implementations§

Source§

impl Clone for Table

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Table

Source§

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

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

impl Default for Table

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for Table

Source§

impl From<Table> for Block

Source§

fn from(value: Table) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for Table

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Table

Auto Trait Implementations§

§

impl Forget for Table

§

impl Freeze for Table

§

impl Move for Table

§

impl RefUnwindSafe for Table

§

impl Send for Table

§

impl Sync for Table

§

impl Unpin for Table

§

impl UnsafeUnpin for Table

§

impl UnwindSafe for Table

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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, O> Matches<O> for T
where T: PartialEq<O>,

Source§

fn validate_matches(&self, other: &O) -> bool

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.