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
或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/generated/bincode
文件夹,文件名为 <struct/enum name>_Encode.rs
和 <struct/enum name>_Decode.rs
。这有助于调试。
依赖项
~185KB