10 个版本

2.0.0-rc.32023 年 3 月 30 日
2.0.0-rc.22022 年 10 月 4 日
2.0.0-rc.12022 年 3 月 4 日
2.0.0-beta.32022 年 2 月 16 日
2.0.0-alpha.02021 年 10 月 25 日

#2304编码

Download history 29432/week @ 2024-03-14 25375/week @ 2024-03-21 25316/week @ 2024-03-28 24107/week @ 2024-04-04 24514/week @ 2024-04-11 29379/week @ 2024-04-18 38085/week @ 2024-04-25 46318/week @ 2024-05-02 44568/week @ 2024-05-09 53479/week @ 2024-05-16 51907/week @ 2024-05-23 48715/week @ 2024-05-30 39996/week @ 2024-06-06 45524/week @ 2024-06-13 43138/week @ 2024-06-20 35087/week @ 2024-06-27

174,163 每月下载量
用于 25 个 crate(通过 fksainetwork

MIT 许可证

42KB
729

Bincode-derive

Bincode 的 derive crate。实现了 bincode::Encodebincode::Decode

此 crate 大约分为 2 部分

解析

大部分解析都在 src/parse/ 文件夹中完成。这将生成以下类型

  • Attributes,目前未使用
  • Visibility,目前未使用
  • DataType 要解析的数据类型的名称,可以是 StructEnum
  • Generics 类型泛型部分,例如 struct Foo<'a>
  • GenericConstraints 类型 "where" 部分

生成

代码实现的生成在 src/derive_enum.rssrc/derive_struct.rs 中完成。

这由 src/generate 中的结构支持。此模块最显著的特点是

  • StreamBuilderTokenStream 的一个薄而友好的包装器
  • 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