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 编码
每月571,121次下载
在 23 个crate中使用 (17直接使用)
120KB
3K SLoC
sval
: 流式、结构化值
sval
是一个轻量级的仅序列化框架,它将值视为一个扁平的令牌流。它非常适合像JSON这样的自描述文本格式。
这与serde
有什么不同?
serde
是Rust的事实上的序列化框架,非常适合大多数用例。sval
类似于serde::ser
和serde::de
的轻量级混合,范围更小。它与serde
做出了一些关键的设计决策,使其在处理自描述格式时更加有效。
- API是扁平的,而不是使用递归来流式传输嵌套数据结构。
- 所有动态大小的值,包括文本字符串,都可以在多个调用中流式传输。
- 借用是可选的优化。
- 核心数据模型很小,带有扩展性的标签。
数据模型
- 值
null
:任何其他有意义值的缺失。- 布尔值:
true
和false
。 - 文本字符串:UTF8编码的字节流。
- 二进制字符串:任意字节的流。
- 数字
- 整数:
u8
-u128
,i8
-i128
。 - 二进制浮点数:
f32
-f64
。
- 整数:
- 映射:异构的键值对集合。
- 序列:异构的值集合。
- 标签:带外类型提示。
- 标签值:与值关联的标签。
- 记录:标签映射,其中键是已知标签。
- 元组:标签序列。
- 枚举:标签变体,其中变体是枚举、标签、标签值、记录或元组。
sval
包含一些扩展其数据模型的内置标签,这些标签定义了一些常见的数据类型
- Rust 原始类型
()
.Option<T>
.
- 任意精度十进制浮点数。
将来可能会添加其他内置标签。库也可以定义它们自己的标签。
当前状态
该项目具有完整和稳定的API,但尚未进行良好的文档说明。
依赖项
~110KB