# A library for converting `csv` to a table. It uses [`tabled`](https://github.com/zhiburt/tabled) as a rendering backend. ## Install Add the library to a dependency list. ```toml [dependencies] csv_to_table = "0.3" ``` ## Usage There's 2 approaches the library provides. - In memory approach; where we load CSV into memory and then construct a table. - Sniffing a csv; so the used memory will be limited. - Setting your constrains so no memory will be used.
Example of in memory approach |
---|
```rust fn main() { let syscalls = "\ 0,INDIR,,\"int sys_syscall(int number, ...)\"\n\ 1,STD,,\"void sys_exit(int rval)\"\n\ 2,STD,,\"int sys_fork(void)\"\n\ 3,STD,NOLOCK,\"ssize_t sys_read(int fd, void *buf, size_t nbyte)\"\n\ 4,STD,NOLOCK,\"ssize_t sys_write(int fd, const void *buf, size_t nbyte)\""; let table = csv_to_table::from_reader(syscalls.as_bytes()).unwrap(); println!("{table}") } ``` |
Result |
```text +---+-------+--------+----------------------------------------------------------+ | 0 | INDIR | | int sys_syscall(int number, ...) | +---+-------+--------+----------------------------------------------------------+ | 1 | STD | | void sys_exit(int rval) | +---+-------+--------+----------------------------------------------------------+ | 2 | STD | | int sys_fork(void) | +---+-------+--------+----------------------------------------------------------+ | 3 | STD | NOLOCK | ssize_t sys_read(int fd, void *buf, size_t nbyte) | +---+-------+--------+----------------------------------------------------------+ | 4 | STD | NOLOCK | ssize_t sys_write(int fd, const void *buf, size_t nbyte) | +---+-------+--------+----------------------------------------------------------+ ``` |
Example of sniffing approach |
---|
```rust fn main() { let syscalls = "\ 0,INDIR,,\"int sys_syscall(int number, ...)\"\n\ 1,STD,,\"void sys_exit(int rval)\"\n\ 2,STD,,\"int sys_fork(void)\"\n\ 3,STD,NOLOCK,\"ssize_t sys_read(int fd, void *buf, size_t nbyte)\"\n\ 4,STD,NOLOCK,\"ssize_t sys_write(int fd, const void *buf, size_t nbyte)\""; let table = csv_to_table::iter::from_reader(syscalls.as_bytes()).sniff(3); table.build(std::io::stdout()).unwrap(); } ``` |
Result |
```text
+---+-------+--+----------------------------------+
| 0 | INDIR | | int sys_syscall(int number, ...) |
+---+-------+--+----------------------------------+
| 1 | STD | | void sys_exit(int rval) |
+---+-------+--+----------------------------------+
| 2 | STD | | int sys_fork(void) |
+---+-------+--+----------------------------------+
| 3 | STD | | ssize_t sys_read(int fd, void *b |
+---+-------+--+----------------------------------+
| 4 | STD | | ssize_t sys_write(int fd, const |
+---+-------+--+----------------------------------+
```
Notice that the last 2 rows are truncated. |