#枚举 #位标志 #判别联合 #过滤 #联合 #位掩码 #包装器

filterable-enum

一个用于生成可过滤枚举的库(结合位标志和判别联合)

1 个不稳定版本

0.1.0 2024年4月26日

#1002Rust 模式

Download history 132/week @ 2024-04-22 80/week @ 2024-04-29 93/week @ 2024-05-06 133/week @ 2024-05-13 142/week @ 2024-05-20 16/week @ 2024-05-27 6/week @ 2024-06-03 6/week @ 2024-06-10 2/week @ 2024-06-17 4/week @ 2024-06-24 21/week @ 2024-07-08 36/week @ 2024-07-15 15/week @ 2024-07-22

72 每月下载量
用于 tracexec

MIT 许可证

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