22 个版本 (11 个重大更新)

0.14.0 2024年6月7日
0.13.3 2023年11月29日
0.13.0 2023年10月27日
0.11.2 2023年5月15日
0.2.0 2021年3月24日

#21 in #directive

Download history 15134/week @ 2024-05-04 19502/week @ 2024-05-11 19154/week @ 2024-05-18 16994/week @ 2024-05-25 19152/week @ 2024-06-01 18558/week @ 2024-06-08 20377/week @ 2024-06-15 18867/week @ 2024-06-22 19038/week @ 2024-06-29 23049/week @ 2024-07-06 22783/week @ 2024-07-13 25459/week @ 2024-07-20 24177/week @ 2024-07-27 25286/week @ 2024-08-03 22403/week @ 2024-08-10 20973/week @ 2024-08-17

96,830 每月下载量
128 个crate中 使用 (2 直接)

MIT 许可证

240KB
6.5K SLoC

binrw_derive

为binrw添加新指令的快速入门

在所有情况下,都要参考现有的指令来遵循已建立的代码和测试约定。

  1. binrw::parser::keywords 中添加新指令的关键字。
  2. binrw::parser::attrs 中定义新指令的元类型。如果您需要新的元类型,请将其添加到 meta_types 中,并附上测试。
  3. 如果新指令需要一个特殊的最终类型(例如 CondEndian),请将其添加到新的 binrw::parser::types 模块中,并从 binrw::parser::types 中导出。新类型最终必须实现 binrw::parser::TrySet,但有时可以通过实现 FromTryFrom 来更简单地做到这一点(使用特例化实现)。
  4. 将新指令添加为 binrw::parser::top_level_attrsbinrw::parser::field_level_attrs 中相关结构的字段。
  5. 如果新的指令以可能导致无效的方式与其他指令结合,并且无法使用枚举类型(例如 ReadMode)来表示这种关系,请在 FromInput::push_field(如果验证可以在字段构造后立即进行)或 FromInput::validate(如果只能在整个结构解析完成后进行验证)中添加验证。
  6. 使用新字段在 binrw::codegen::read_optionsbinrw::codegen::write_options 的适当位置生成代码。
  7. binrw 包的 tests 目录中添加新的集成测试。
  8. 如果新的指令生成新的错误(例如来自验证),请向 binrw::parser::tests(在 mod.rs 中)添加单元测试来验证这些代码路径,并将相同的 trybuild 测试添加到 binrw 包的 tests/ui 目录。 (运行 trybuild 测试需要夜间编译器;有关更多详细信息,请参阅 binrw::tests::ui 中的注释。)

依赖项

~1.5MB
~36K SLoC