58个版本 (27稳定版)

2.13.0 2024年3月28日
2.11.1 2024年1月31日
2.10.2 2023年10月19日
2.6.1 2023年6月27日
0.0.4 2018年12月6日

#177 in 编码

Download history 105772/week @ 2024-04-28 103229/week @ 2024-05-05 124186/week @ 2024-05-12 119941/week @ 2024-05-19 125311/week @ 2024-05-26 138725/week @ 2024-06-02 133053/week @ 2024-06-09 123100/week @ 2024-06-16 120977/week @ 2024-06-23 120566/week @ 2024-06-30 134205/week @ 2024-07-07 135147/week @ 2024-07-14 136743/week @ 2024-07-21 132140/week @ 2024-07-28 133399/week @ 2024-08-04 164995/week @ 2024-08-11

每月571,121次下载
23 个crate中使用 (17直接使用)

Apache-2.0 OR MIT

120KB
3K SLoC

sval: 流式、结构化值

Rust Latest version Documentation Latest

sval是一个轻量级的仅序列化框架,它将值视为一个扁平的令牌流。它非常适合像JSON这样的自描述文本格式。

这与serde有什么不同?

serde是Rust的事实上的序列化框架,非常适合大多数用例。sval类似于serde::serserde::de的轻量级混合,范围更小。它与serde做出了一些关键的设计决策,使其在处理自描述格式时更加有效。

  1. API是扁平的,而不是使用递归来流式传输嵌套数据结构。
  2. 所有动态大小的值,包括文本字符串,都可以在多个调用中流式传输。
  3. 借用是可选的优化。
  4. 核心数据模型很小,带有扩展性的标签。

数据模型

    • null:任何其他有意义值的缺失。
    • 布尔值:truefalse
    • 文本字符串:UTF8编码的字节流。
    • 二进制字符串:任意字节的流。
    • 数字
      • 整数:u8-u128i8-i128
      • 二进制浮点数:f32-f64
    • 映射:异构的键值对集合。
    • 序列:异构的值集合。
    • 标签:带外类型提示。
    • 标签值:与值关联的标签。
    • 记录:标签映射,其中键是已知标签。
    • 元组:标签序列。
    • 枚举:标签变体,其中变体是枚举、标签、标签值、记录或元组。

sval 包含一些扩展其数据模型的内置标签,这些标签定义了一些常见的数据类型

  • Rust 原始类型
    • ().
    • Option<T>.
  • 任意精度十进制浮点数。

将来可能会添加其他内置标签。库也可以定义它们自己的标签。

当前状态

该项目具有完整和稳定的API,但尚未进行良好的文档说明。

依赖项

~110KB