Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aejenk/Tablefy
A library for quickly and easily turning a struct into a table.
https://github.com/aejenk/Tablefy
format struct table utility
Last synced: about 1 month ago
JSON representation
A library for quickly and easily turning a struct into a table.
- Host: GitHub
- URL: https://github.com/aejenk/Tablefy
- Owner: aejenk
- License: mpl-2.0
- Created: 2019-07-25T20:27:42.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-04-12T08:04:15.000Z (over 1 year ago)
- Last Synced: 2024-05-22T12:21:38.378Z (7 months ago)
- Topics: format, struct, table, utility
- Language: Rust
- Size: 8.96 MB
- Stars: 7
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# tablefy
[![tablefy](https://img.shields.io/crates/v/tablefy.svg)](https://crates.io/crates/tablefy)
[![tablefy](https://docs.rs/tablefy/badge.svg)](https://docs.rs/crate/tablefy)To check for updates see [the changelog](CHANGELOG.md).
```rust
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
}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));
}
``````rust
+--------------------+---------------+------------------+-------+
| Hmm... Nice Header | We Have Here! | Don't You Agree? | maybe |
+====================+===============+==================+=======+
| a | 2 | 3 | |
+--------------------+---------------+------------------+-------+
| b | 3 | 4 | x |
+--------------------+---------------+------------------+-------+
| c | 5 | 8 | |
+--------------------+---------------+------------------+-------+
```
This crate serves as an extension of [`prettytable`](https://docs.rs/prettytable-rs/0.8.0/prettytable/)
by specifying a `Tablefy` trait in order to turn any struct (whose members implement Display) to turn into
a [`Table`](https://docs.rs/prettytable-rs/0.8.0/prettytable/struct.Table.html) object.As a result, this means that `prettytable` is a dependency. You won't be able to use this crate without
also adding `prettytable`.If you'd like to get the full functionality of this crate *(with proc_macros)*, be sure to check out
[tablefy_derive](tablefy_derive)!.### Future updates
Currently there are two major improvements I have in mind for this crate.- ~~Fields can be tagged to customize the header name.~~
- This has now been implemented! Be sure to update `tablefy_derive`.
- Fields can be tagged to print using `{:?}` and `{:#?}` instead of `{}`License: MPL-2.0