#table #serde #serialization #csv

tsv

tsv (制表符分隔值)数据格式,用于serde(序列化/反序列化)

2个版本

使用旧的Rust 2015

0.1.1 2018年9月26日
0.1.0 2018年8月16日

#1982编码

Download history 20/week @ 2024-03-11 18/week @ 2024-03-18 15/week @ 2024-03-25 37/week @ 2024-04-01 1/week @ 2024-04-08 4/week @ 2024-04-15 14/week @ 2024-04-22 10/week @ 2024-04-29 14/week @ 2024-05-13 15/week @ 2024-05-20 9/week @ 2024-05-27 26/week @ 2024-06-03 16/week @ 2024-06-10 2/week @ 2024-06-17 16/week @ 2024-06-24

61 每月下载量

MIT 许可证

66KB
1.5K SLoC

tsv项目引入了一种新的数据序列化/反序列化格式,它是基于文本的,用于处理表格数据。

问题

从serde的角度来看,经典的 tsv 只适用于由原始数据(整数、浮点数、字符串等)组成的结构体(序列)的架构。必须扩展规范以允许任意架构,例如由结构体组成的结构体。

解决方案

本项目通过将序列放置在列中扩展了规范。请参阅tsv-spec.txt以获取规范。它使用serde包进行序列化/反序列化,并使用反射包生成列名和处理枚举。

注意

如果您为您的类型实现Serialize/Deserialize以告诉serde它们是序列/映射,请确保它们的 schemata()Vec::schemata()/HashMap::schemata() 是同构的。

优点

  1. 简单。对于最终用户来说,使用tsv文件的唯一要求是理解什么是表格。它作为一个配置文件格式对于非技术用户来说是极其简单的。

  2. 可用。您可以使用Microsoft Excel、OpenOffice/LibreOffie Calc以及支持弹性制表位的文本编辑器来查看/编辑tsv文件。如果您阅读了规范中的所有63行,手动编写tsv也很容易。

缺点

  1. 不注重效率。

  2. 不具有自描述性。

许可证

MIT。

示例

以下是一个使用tsv格式编写的cargo配置文件,其中用空格替换了制表符:

                                        deps
package                         lib             value    
name    version authors keyword macro   name    Version Path
tsv     0.1.0   oooutlk tsv     X       serde   1.0
                        tab             trees           ~/trees
                        table
                        serde

请参阅序列化示例反序列化示例

依赖项

~2.5MB
~59K SLoC