Struct tabular::Row[][src]

pub struct Row(_);

Type for building a Table row.

Make a new one with Row::new(), then add to it with Row::with_cell(). Or make a complete one with the row!() macro or Row::from_cells().

Examples

#[macro_use(row)]
extern crate tabular;

let table = tabular::Table::new("{:>}  ({:<}) {:<}")
    .with_row(row!(1, "I", "one"))
    .with_row(row!(5, "V", "five"))
    .with_row(row!(10, "X", "ten"))
    .with_row(row!(50, "L", "fifty"))
    .with_row(row!(100, "C", "one-hundred"));

assert_eq!( format!("\n{}", table),
            r#"
  1  (I) one
  5  (V) five
 10  (X) ten
 50  (L) fifty
100  (C) one-hundred
"# );

Methods

impl Row
[src]

Makes a new, empty table row.

Adds a cell to this table row.

Examples

struct DirEntry {
    size:         usize,
    is_directory: bool,
    name:         String,
}

impl DirEntry {
    fn to_row(&self) -> tabular::Row {
        tabular::Row::new()
            .with_cell(self.size)
            .with_cell(if self.is_directory { "d" } else { "" })
            .with_cell(&self.name)
    }
}

Adds a cell to this table row.

This performs the same work as with_cell, but it's is convenient for adding cells in a loop without having to reassign the row each time. See the example for len.

Builds a row from an iterator over strings.

Examples

use std::fmt::Display;

struct Matrix<'a, T: 'a> {
    width:  usize,
    height: usize,
    data:   &'a [T],
}

impl<'a, T: Display> Display for Matrix<'a, T> {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        let ncols = self.width;
        let row_spec: String =
             std::iter::repeat("{:>} ".chars()).take(ncols).flat_map(|x| x).collect();

        let mut table = Table::new(row_spec.trim_right());

        for row_index in 0 .. self.height {
            table.add_row(Row::from_cells(
                self.data[row_index * ncols ..]
                    .iter().take(ncols)
                    .map(|elt: &T| elt.to_string())));
        }

        write!(f, "{}", table)
    }
}

print!("{}", Matrix {
    width:   3,
    height:  2,
    data:    &[1, 23, 456, 7890, 12345, 678901],
});

The number of cells in this row.

Examples

It's probably not actually useful, because you are unlikely to come upon a row whose size you don't already know. But it's useful for stating Table::add_row's invariant.

fn print_ragged_matrix<T: Display>(matrix: &[&[T]]) {
   let ncols = matrix.iter().map(|row| row.len()).max().unwrap_or(0);

   let mut row_spec = String::with_capacity(5 * ncols);
   for _ in 0 .. ncols {
       row_spec.push_str("{:>} ");
   }

   let mut table = Table::new(row_spec.trim_right());

   for row in matrix {
       let mut table_row = Row::from_cells(row.iter().map(ToString::to_string));

       // Don't remember how to count or subtract but I'll get there eventually.
       while table_row.len() < table.column_count() {
           table_row.add_cell("");
       }
   }

   print!("{}", table);
}

print_ragged_matrix(&[&[1, 2, 3, 4, 5], &[12, 23, 34], &[123, 234], &[1234]]);

Trait Implementations

impl Clone for Row
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Default for Row
[src]

Returns the "default value" for a type. Read more

impl Debug for Row
[src]

Formats the value using the given formatter. Read more

Auto Trait Implementations

impl Send for Row

impl Sync for Row