1 个不稳定版本
0.1.0 | 2024年4月26日 |
---|
#1002 在 Rust 模式
72 每月下载量
用于 tracexec
4KB
filterable-enum
为 Rust 中的判别联合(DU)提供可过滤的包装器。
这是什么?
在某些情况下,您可能希望通过位掩码过滤 DU,以检查它是否匹配所有变体的子集。此 crate 提供了一个 derive 宏来为 DU 生成可过滤的包装器。
理想情况下,我认为整个 crate 都是多余的。Rust 已经存储了一个标签来表示 DU 的变体。然而,Rust 并不向用户公开此标签,因此我无法真正使用该标签作为位标志。
如何使用
请参阅 测试 以获取示例。
要向 Kind
枚举添加更多 derive,请使用 #[filterable_enum(kind_extra_derive=DeriveMacroYouWant)]
。
要向 Kind
枚举添加更多属性,请使用 #[filterable_enum(kind_extra_attrs="ATTR")]
,例如 #[filterable_enum(kind_extra_attrs="strum(serialize_all = \"kebab-case\")")]
。
注意
这是我写的第一个过程宏,所以我不确定我是否做得地道或正确。如果您有任何建议或改进,请随时提出问题或 PR。
依赖关系
~1.7–2.4MB
~49K SLoC