2个版本

0.1.2 2024年8月3日
0.1.1 2024年8月1日
0.1.0 2024年7月9日

#1981编码

Download history 109/week @ 2024-07-08 248/week @ 2024-07-29 15/week @ 2024-08-05

每月下载量 268
用于 rustbif

GPL-3.0 许可证

28KB
664

Rust编码和解码框架

这个编码和解码框架类似于 serde,但体积更小、更简单(因此得名 cerdito)。它不使用中间数据模型,不使用访问者模式,也不支持零拷贝解码。然而,它提供了同步和异步API。这个框架主要为了支持 rustbif——一种用于编码Rust数据类型的紧凑二进制格式。

待办事项

  • 修复枚举标签:限制为 正数,允许在区分符中使用常量表达式。负区分符?考虑移除对显式变体区分符的支持。
  • 错误(移除 unwraps 和 panics),弄清楚是否需要插入 ?;Ok(...) 或直接返回。
  • 声明元组的宏。
  • [T; N] 不实现 Default,用户也无法实现它。当“新”程序读取“旧”数据时需要 Default。需要解决这个问题。
  • 实现 Arr<bool, N>、Arr<char, N>、Arr<u8, N>、...、Arr<u128, N>、Arr<i8, N>、...、Arr<i128, N>、Arr<f32, N>、Arr<f64, N>、VArr、VArr、VArr、...、VArr、VArr、...、VArr、VArr、VArr; 以及 Arr<T; N>(我们需要这个来实现 Default),VArr(这和 Vec 一样,但是,如果我们需要实现 foreign trait,有一个新的类型会更好)。
  • 考虑在您的数据结构中使用 Result<T, E> —— 这是一个透明的(或不是?)包装器,不会出现在线上,并且只会捕获子结构解码的成功/失败。如何编码有 Err() 的数据?
  • 考虑使用属性(默认值)来控制运行时兼容性:当字段缺失时,返回 Ok(default()) OR Error();或者尝试确定类型是否实现了 Default。显式的属性可能更好,例如,属性也可以提供默认值。

依赖

~240–680KB
~16K SLoC