2个版本
0.1.2 | 2024年8月3日 |
---|---|
0.1.1 | 2024年8月1日 |
0.1.0 |
|
#1981 在 编码
每月下载量 268
用于 rustbif
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