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
96,830 每月下载量
在 128 个crate中 使用 (2 直接)
240KB
6.5K SLoC
binrw_derive
为binrw添加新指令的快速入门
在所有情况下,都要参考现有的指令来遵循已建立的代码和测试约定。
- 在
binrw::parser::keywords
中添加新指令的关键字。 - 在
binrw::parser::attrs
中定义新指令的元类型。如果您需要新的元类型,请将其添加到meta_types
中,并附上测试。 - 如果新指令需要一个特殊的最终类型(例如
CondEndian
),请将其添加到新的binrw::parser::types
模块中,并从binrw::parser::types
中导出。新类型最终必须实现binrw::parser::TrySet
,但有时可以通过实现From
或TryFrom
来更简单地做到这一点(使用特例化实现)。 - 将新指令添加为
binrw::parser::top_level_attrs
和binrw::parser::field_level_attrs
中相关结构的字段。 - 如果新的指令以可能导致无效的方式与其他指令结合,并且无法使用枚举类型(例如
ReadMode
)来表示这种关系,请在FromInput::push_field
(如果验证可以在字段构造后立即进行)或FromInput::validate
(如果只能在整个结构解析完成后进行验证)中添加验证。 - 使用新字段在
binrw::codegen::read_options
和binrw::codegen::write_options
的适当位置生成代码。 - 在
binrw
包的tests
目录中添加新的集成测试。 - 如果新的指令生成新的错误(例如来自验证),请向
binrw::parser::tests
(在mod.rs
中)添加单元测试来验证这些代码路径,并将相同的 trybuild 测试添加到binrw
包的tests/ui
目录。 (运行 trybuild 测试需要夜间编译器;有关更多详细信息,请参阅binrw::tests::ui
中的注释。)
依赖项
~1.5MB
~36K SLoC