4 个版本 (2 个破坏性更改)

0.3.2 2024年6月1日
0.3.1 2024年5月31日
0.3.0 2024年5月31日
0.2.0 2024年5月31日
0.1.0 2024年5月30日

10#marshal

Download history 441/week @ 2024-05-29 62/week @ 2024-06-05 48/week @ 2024-06-12 12/week @ 2024-06-19 11/week @ 2024-06-26

每月141 次下载
alox-48 中使用

MPL-2.0 许可证

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