#table #struct #derive #format #serialization

tablefy

将任何结构体以表格形式显示的简单方法!

4个版本

0.1.3 2019年7月29日
0.1.2 2019年7月26日
0.1.1 2019年7月25日
0.1.0 2019年7月25日

命令行界面 中排名 #761

Download history 12/week @ 2024-03-29 1/week @ 2024-04-05

每月下载量 576

授权协议:MPL-2.0

10KB

tablefy

tablefy tablefy

查看更新请参阅 变更日志.

use tablefy_derive::Tablefy;
use tablefy::Tablefy;

// This struct now implements the tablefy trait
#[derive(Tablefy)]
pub struct Basic {

    #[header(name = "Hmm... Nice Header")]
    pub something: String,

    #[header(name = "We Have Here!")]
    pub otherthing: i16,

    #[header(name = "Don't You Agree?")]
    pub newthing: i8,

    pub maybe: Option<String>
}

fn main() {
    // Creating a vector of structs...
    let basic = vec![Basic {
        something: String::from("a"),
        otherthing: 2,
        newthing: 3,
        maybe: None
    }, Basic {
        something: String::from("b"),
        otherthing: 3,
        newthing: 4,
        maybe: Some(String::from("x"))
    }, Basic {
        something: String::from("c"),
        otherthing: 5,
        newthing: 8,
        maybe: None
    }];

    // Turning them into a Table struct...
    let table = tablefy::into_table(&basic);

    // Or if you just want the string...
    println!("{}", tablefy::into_string(&basic));
}
+--------------------+---------------+------------------+-------+
| Hmm... Nice Header | We Have Here! | Don't You Agree? | maybe |
+====================+===============+==================+=======+
| a                  | 2             | 3                |       |
+--------------------+---------------+------------------+-------+
| b                  | 3             | 4                | x     |
+--------------------+---------------+------------------+-------+
| c                  | 5             | 8                |       |
+--------------------+---------------+------------------+-------+

此crate通过指定一个 Tablefy 特征作为 prettytable 的扩展,将任何(成员实现Display的)结构体转换为 Table 对象。

因此,这意味着 prettytable 是一个依赖项。不添加 prettytable,您将无法使用此crate。

如果您想获取此crate的全部功能(带proc_macro),请务必查看 tablefy_derive!.

未来更新

目前,我考虑对这个crate进行两项主要改进。

  • 字段可以被标记来自定义表头名称。
    • 现在已实现!请确保更新 tablefy_derive.
  • 字段可以被标记为使用 {:?}{:#?} 而不是 {} 来打印。

授权协议:MPL-2.0

依赖项

~2–3MB
~35K SLoC