1个版本 (0个不稳定版本)
| 2.0.0-rc.1 | 2022年10月15日 |
|---|
#138 in #encode-decode
36KB
638 行
Bincode-derive
bincode的derivecrate。实现了bincode::Encode和bincode::Decode。
此crate大致分为两部分
解析
大部分解析都在src/parse/文件夹中完成。这将生成以下类型
Attributes,目前未使用Visibility,目前未使用DataType,可以是Struct或Enum,其名称为解析的数据类型Generics类型的泛型部分,例如struct Foo<'a>GenericConstraints类型的“where”部分
生成
生成代码实现是在src/derive_enum.rs和src/derive_struct.rs中完成的。
这由src/generate中的结构体支持。此模块最显著的特点是
StreamBuilder是围绕TokenStream的一个薄且友好的包装器Generator是代码生成器的基本类型。这有一些生成实现的方法ImplFor是一个用于单个impl A for B构造的辅助结构体。在这些函数中可以定义GenerateFnBody是一个辅助结构体,用于上述impl中的单个函数。它是通过回调到FnBuilder创建的,该回调有助于设置一些属性。GenerateFnBody有一个stream()函数,该函数返回用于该函数的StreamBuilder。
有关额外的派生测试,请参阅 ../tests 中的测试用例。
为了测试目的,所有生成的代码都输出到当前的 target 文件夹下,文件名为 <struct/enum name>_Encode.rs 和 <struct/enum name>_Decode.rs。这有助于调试。
依赖关系
~185KB