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

filterable-enum

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

1 个不稳定版本

0.1.0 2024年4月26日

#1002Rust 模式

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

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