4 个版本 (2 个破坏性更改)
0.3.2 | 2024年6月1日 |
---|---|
0.3.1 |
|
0.3.0 | 2024年5月31日 |
0.2.0 | 2024年5月31日 |
0.1.0 | 2024年5月30日 |
10 在 #marshal
每月141 次下载
在 alox-48 中使用
29KB
572 行
alox-48
alox-48(铝氧化物48的缩写)是一个用于反序列化和序列化的crate,同时支持Ruby的Marshal数据格式,使用自定义数据格式如serde。
alox-48旨在提供几乎完美的往返反序列化,但有例外
- 对象链接不被保留。对象链接是Ruby在Marshal中压缩数据的方式。它们严重依赖于Ruby拥有GC,因此不适合映射到Rust。
- 不支持大数。
为什么使用自定义数据格式
最初这个crate依赖于nightly扩展serde,使用min_speciailization
。不幸的是,这有很多缺点,反序列化器会频繁地在有效输入上卡住,而序列化器会输出无效数据。
大多数问题都围绕着符号- Ruby使用前缀为@
的符号作为实例变量,但也接受不带前缀的变量,默默地丢弃它们。
我正在开发一个可以与serde的数据格式接口的单独serde适配器,但看起来它将仅限于nightly。
依赖项
~1.2–1.7MB
~36K SLoC