pub enum Cell<'a> {
Int(i32),
Float(f64),
Text(Box<dyn Unstyle + 'a>),
}Expand description
The content of each cell of the table (either a string or a number)
Variants§
Int(i32)
Integer variant
Float(f64)
Float variant
Text(Box<dyn Unstyle + 'a>)
Unstylable Text variant
Implementations§
Source§impl<'a> Cell<'a>
impl<'a> Cell<'a>
Sourcepub fn from(s: &str) -> Self
pub fn from(s: &str) -> Self
Creates a Text Cell from a simple &str
§Warning
If the given &str contains ASCII escape sequences, they will mess with the generated
layout. Use a Box<dyn Unstyle> like
AsciiEscapedString.
Examples found in repository?
examples/wide_characters.rs (line 8)
3fn main() {
4 // Wide characters are handled correctly when computing columns length:
5 let table = Table::new(
6 Style::Grid,
7 vec![
8 vec![Cell::from("Tabulate with style!")],
9 vec![Cell::from("табулировать со стилем!")],
10 vec![Cell::from("スタイルで集計!")],
11 vec![Cell::from("用样式表!")],
12 ],
13 None,
14 );
15 println!("{}", table.tabulate());
16 /* Will print:
17 +-------------------------+
18 | Tabulate with style! |
19 +-------------------------+
20 | табулировать со стилем! |
21 +-------------------------+
22 | スタイルで集計! |
23 +-------------------------+
24 | 用样式表! |
25 +-------------------------+
26 */
27}More examples
examples/simple.rs (line 8)
3fn main() {
4 // A simple table with strings and numbers and the default alignments
5 let mut table = Table::new(
6 Style::Fancy,
7 vec![
8 vec![Cell::from("spam"), Cell::Float(41.9999)],
9 vec![Cell::from("eggs"), Cell::Int(451)],
10 ],
11 Some(Headers::from(vec!["strings", "numbers"])),
12 );
13 println!("{}", table.tabulate());
14 /* Will print:
15 ╒═══════════╤═══════════╕
16 │ strings │ numbers │
17 ╞═══════════╪═══════════╡
18 │ spam │ 41.9999 │
19 ├───────────┼───────────┤
20 │ eggs │ 451 │
21 ╘═══════════╧═══════════╛
22 */
23
24 // Alignment can be changed like so:
25 table.set_align(Align::Right, Align::Center);
26 println!("{}", table.tabulate());
27 /* Will print:
28 ╒═══════════╤═══════════╕
29 │ strings │ numbers │
30 ╞═══════════╪═══════════╡
31 │ spam │ 41.9999 │
32 ├───────────┼───────────┤
33 │ eggs │ 451.0000 │
34 ╘═══════════╧═══════════╛
35 */
36
37 // With the feature "ansi_term_style", the borders style can be changed like so:
38 table.set_border_style(ansi_term::Color::Cyan.bold());
39 println!("{}", table.tabulate());
40 // Will print same as above but with bold and colored borders
41}examples/colored_content.rs (line 8)
3fn main() {
4 // Colored content can be inserted either with AsciiEscapedString
5 let table = Table::new(
6 Style::Presto,
7 vec![
8 vec![Cell::from("Normal"), Cell::from("Stybulate")],
9 vec![
10 Cell::from("Red"),
11 Cell::Text(Box::new(AsciiEscapedString::from(
12 "\x1b[31mStybulate\x1b[0m",
13 ))),
14 ],
15 vec![
16 Cell::from("Green"),
17 Cell::Text(Box::new(AsciiEscapedString::from(
18 "\x1b[32mStybulate\x1b[0m",
19 ))),
20 ],
21 vec![
22 Cell::from("Yellow"),
23 Cell::Text(Box::new(AsciiEscapedString::from(
24 "\x1b[33mStybulate\x1b[0m",
25 ))),
26 ],
27 vec![
28 Cell::from("Blue"),
29 Cell::Text(Box::new(AsciiEscapedString::from(
30 "\x1b[34mStybulate\x1b[0m",
31 ))),
32 ],
33 vec![
34 Cell::from("Mutlicolor and blinking (because why not?)"),
35 Cell::Text(Box::new(AsciiEscapedString::from(
36 "\x1b[5;30mS\x1b[31mt\x1b[32my\x1b[33mb\x1b[34mu\x1b[35ml\x1b[36ma\x1b[37mt\x1b[30me\x1b[0m",
37 ))),
38 ],
39 ],
40 Some(Headers::from(vec!["Style", "Text"])),
41 );
42 println!("{}", table.tabulate());
43
44 // or with ansi_term ANSIStrings (with the feature "ansi_term_style")
45 use ansi_term::ANSIStrings;
46 use ansi_term::Color::*;
47 let red_stybulate = &[Red.paint("Stybulate")];
48 let green_stybulate = &[Green.paint("Stybulate")];
49 let yellow_stybulate = &[Yellow.paint("Stybulate")];
50 let blue_stybulate = &[Blue.paint("Stybulate")];
51 let multicolorandblinking_stybulate = &[
52 Black.blink().paint("S"),
53 Red.blink().paint("t"),
54 Green.blink().paint("y"),
55 Yellow.blink().paint("b"),
56 Blue.blink().paint("u"),
57 Purple.blink().paint("l"),
58 Cyan.blink().paint("a"),
59 White.blink().paint("t"),
60 Black.blink().paint("e"),
61 ];
62 let table2 = Table::new(
63 Style::FancyGithub,
64 vec![
65 vec![Cell::from("Normal"), Cell::from("Stybulate")],
66 vec![
67 Cell::from("Red"),
68 Cell::Text(Box::new(ANSIStrings(red_stybulate))),
69 ],
70 vec![
71 Cell::from("Green"),
72 Cell::Text(Box::new(ANSIStrings(green_stybulate))),
73 ],
74 vec![
75 Cell::from("Yellow"),
76 Cell::Text(Box::new(ANSIStrings(yellow_stybulate))),
77 ],
78 vec![
79 Cell::from("Blue"),
80 Cell::Text(Box::new(ANSIStrings(blue_stybulate))),
81 ],
82 vec![
83 Cell::from("Mutlicolor and blinking (because why not?)"),
84 Cell::Text(Box::new(ANSIStrings(multicolorandblinking_stybulate))),
85 ],
86 ],
87 Some(Headers::from(vec!["Style", "Text"])),
88 );
89 println!("{}", table2.tabulate());
90}Sourcepub fn is_a_number(&self) -> bool
pub fn is_a_number(&self) -> bool
Is it a number ?
Sourcepub fn to_unstylable(&self) -> Option<&Box<dyn Unstyle + 'a>>
pub fn to_unstylable(&self) -> Option<&Box<dyn Unstyle + 'a>>
Returns the unstylable content if it is a Text Variant, None otherwise
Sourcepub fn to_string(&self) -> Option<String>
pub fn to_string(&self) -> Option<String>
Returns the string representation of a number, None if it is a Text Variant
Sourcepub fn to_string_with_precision(&self, digits: usize) -> Option<String>
pub fn to_string_with_precision(&self, digits: usize) -> Option<String>
Same as to_string but formatted with a precision
Sourcepub fn digits_len(&self) -> usize
pub fn digits_len(&self) -> usize
Number of digits after the dot in a float, 0 otherwise
Auto Trait Implementations§
impl<'a> Freeze for Cell<'a>
impl<'a> !RefUnwindSafe for Cell<'a>
impl<'a> !Send for Cell<'a>
impl<'a> !Sync for Cell<'a>
impl<'a> Unpin for Cell<'a>
impl<'a> !UnwindSafe for Cell<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more