It uses tabled
as a rendering backend.
Add the library to a dependency list.
[dependencies]
csv_to_table = "0.3"
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 |
---|
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 |
|
Example of sniffing approach |
---|
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 |
|