12个稳定版本
2.1.0 | 2021年8月25日 |
---|---|
2.0.0 | 2021年3月18日 |
1.4.3 | 2021年1月12日 |
1.4.2 | 2020年11月29日 |
1.0.2 | 2020年6月26日 |
#46 在 #combine
53,133 每月下载量
用于 230 个crate(通过 binread)
98KB
3K SLoC
binread_derive
向BinRead
添加新指令的快速入门指南
在所有情况下,都要参考现有指令来遵循既定的代码和测试规范。
- 在
parser::keywords
中为新的指令添加一个关键字。 - 在
parser::attrs
中定义新指令的元类型。如果您需要新的元类型,请将其添加到parser::meta_types
,并附带测试。 - 如果新的指令需要特殊的最终类型(例如
CondEndian
),请将其添加到新的parser::types
模块中,并从parser::types
导出它。新类型最终必须实现parser::TrySet
,但有时可以通过实现From
或TryFrom
来更简单地做到这一点(使用特例泛型实现)。 - 将新指令作为字段添加到
parser::top_level_attrs
和parser::field_level_attrs
中的相关结构中。 - 如果新指令以可能无效的方式与其他指令结合,并且无法使用枚举类型(例如
ReadMode
)来表示这种关系,请在对字段构造后立即发生或在整个结构解析完成后才能进行验证的情况下,在FromInput::push_field
(如果验证可以在字段构造后立即发生)或FromInput::validate
(如果它只能在整个结构解析完成后才能进行验证)中添加验证。 - 使用新字段在适当的地点生成代码,例如在
codegen::read_options
。 - 在
binread
包的tests
目录中添加新的集成测试。 - 如果新的指令生成了新的错误(例如来自验证),请在
parser::tests
(在mod.rs
)中添加单元测试来验证这些代码路径,并将相同的 trybuild 测试添加到binread
包的tests/ui
目录。(运行 trybuild 测试需要夜间编译器;有关更多详细信息,请参阅binread::tests::ui
中的注释。)
依赖项
~1.5MB
~36K SLoC