2个不稳定版本
使用旧的Rust 2015
0.2.0 | 2018年7月2日 |
---|---|
0.1.0 | 2018年3月13日 |
#1793 in 数据结构
78KB
2K SLoC
serde_fs
将Rust数据类型序列化到文件系统以及反序列化。
动机
因此,这个项目基本上是将JSON/YAML/TOML这样的结构映射到文件系统上。你可能会问,为什么这样做?这些格式有什么不好,以至于需要编写这个库呢?
这些格式对于它们被设计的目的来说是不错的……然而,它们有一些缺点,尤其是在它们被用作配置文件等上下文时。让我们列举一些。
- 它们需要工具来访问其中的数据。例如,对于JSON,那将是jq(一个很棒的项目,去看看!)。因此,编写简单的shell脚本就不太可能了,因为这不再是零技术了。
- 它们并不完全合并友好。重新排序、更改附近的行将导致合并冲突。
- 二进制数据的处理。当然,你可以引用二进制文件并单独读取它们,但没有将二进制数据作为第一类公民的支持,这有很好的理由(可由人类编辑的配置或标记文件是文本文件)。
从shell脚本中逻辑上最容易访问值的方式是读取整个文件。那么,如果我们只是将数据序列化为一系列目录和文件会怎么样呢?这就是serde_fs诞生的原因。
项目状态
这是一个早期版本,API以及映射可能会在1.0之前发生变化。
类型-文件系统映射
类型 | 映射 |
---|---|
Option | 如果没有None 目标文件,如果有Some 目标文件 |
(u,i)(8,16,32,64), f(32,64) | 数字的字符串表示 |
String/str | 字符串本身 |
bool | "true" 或 "false" 字符串 |
char | 文件的第一字符 |
() | 空文件 |
tuple | 名为 0 、1 等的文件组成的目录 |
Map | 按键值命名的文件或目录组成的目录 |
struct | 与map相同 |
单元变体 | 包含变体名称的文件 |
tuple变体 | 包含变体名称的文件和其余项的tuple组成的目录 |
struct变体 | 包含变体名称的 variant 文件的目录,其余部分为结构体 |
已知缺点
- 复制粘贴示例并不简单,但可以通过共享补丁/脚本等方法来解决这个问题。
问题追踪
该项目使用 SIT 来独立于 GitHub 管理和跟踪问题。您可以在其 README 中找到发送问题更新到该仓库的简要说明。
许可证
serde_fs 在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。
请参阅 LICENSE-APACHE 和 LICENSE-MIT 获取详细信息。
依赖项
~2MB
~45K SLoC