2个不稳定版本

使用旧的Rust 2015

0.2.0 2018年7月2日
0.1.0 2018年3月13日

#1793 in 数据结构

MIT/Apache

78KB
2K SLoC

serde_fs

Build status Windows Build status

将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 名为 01等的文件组成的目录
Map 按键值命名的文件或目录组成的目录
struct 与map相同
单元变体 包含变体名称的文件
tuple变体 包含变体名称的文件和其余项的tuple组成的目录
struct变体 包含变体名称的 variant 文件的目录,其余部分为结构体

已知缺点

  • 复制粘贴示例并不简单,但可以通过共享补丁/脚本等方法来解决这个问题。

问题追踪

该项目使用 SIT 来独立于 GitHub 管理和跟踪问题。您可以在其 README 中找到发送问题更新到该仓库的简要说明。

许可证

serde_fs 在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。

请参阅 LICENSE-APACHE 和 LICENSE-MIT 获取详细信息。

依赖项

~2MB
~45K SLoC