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