10 个版本
| 2.0.0-rc.3 | 2023 年 3 月 30 日 |
|---|---|
| 2.0.0-rc.2 | 2022 年 10 月 4 日 |
| 2.0.0-rc.1 | 2022 年 3 月 4 日 |
| 2.0.0-beta.3 | 2022 年 2 月 16 日 |
| 2.0.0-alpha.0 | 2021 年 10 月 25 日 |
#2304 在 编码
174,163 每月下载量
用于 25 个 crate(通过 fksainetwork)
42KB
729 行
Bincode-derive
Bincode 的 derive crate。实现了 bincode::Encode 和 bincode::Decode。
此 crate 大约分为 2 部分
解析
大部分解析都在 src/parse/ 文件夹中完成。这将生成以下类型
Attributes,目前未使用Visibility,目前未使用DataType要解析的数据类型的名称,可以是Struct或EnumGenerics类型泛型部分,例如struct Foo<'a>GenericConstraints类型 "where" 部分
生成
代码实现的生成在 src/derive_enum.rs 和 src/derive_struct.rs 中完成。
这由 src/generate 中的结构支持。此模块最显著的特点是
StreamBuilder是TokenStream的一个薄而友好的包装器Generator是代码生成器的基类。它具有生成实现的辅助方法ImplFor是为单个implA for B 构造函数而设计的辅助结构体。在此函数中可以定义功能。GenerateFnBody是为上述impl中的单个函数设计的辅助结构体。这是通过回调到FnBuilder创建的,后者有助于设置一些属性。GenerateFnBody有一个stream()函数,该函数返回该函数的StreamBuilder。
有关额外的派生测试,请参阅 ../tests 中的测试用例。
出于测试目的,所有生成的代码都输出到当前 target/generated/bincode 文件夹,文件名为 <struct/enum name>_Encode.rs 和 <struct/enum name>_Decode.rs。这有助于调试。
依赖项
~185KB