#variant #enums #map #store #struct #macro-derive

variant-map

定义用于存储枚举变体的映射

2 个版本

0.1.1 2023 年 9 月 6 日
0.1.0 2023 年 9 月 6 日

#1838 in 数据结构

MIT 许可证

19KB
390

variant-map

在 Maps 中存储枚举变体。

提供不同类型的 map 等效类型来存储枚举变体。由于这些数据结构是映射,它们存储每个变体的一个值。所有映射都是 serde::Serialize-able 和 serde::Deserialize-able

可以使用来自 variant_map_derive 的 derive 宏轻松地生成这些映射。 variant_map_derive 提供了一个 derive 宏用于 StructMap(每个枚举变体有一个字段的类型)。variant_map_derive 可以通过 variant_mapderive 功能包含。

此软件包还提供简单的 ,通过 macros 功能简化语法。

示例

    use variant_map_derive::VariantStore;

    #[derive(VariantStore)]
    enum MyEnum {
        A,
        B(i32),
    }

    fn main() {
        use variant_map::{as_key, as_map};
        let mut map = <as_map!(MyEnum)>::default();
        let _: &MyEnum = map.get(&<as_key!(MyEnum)>::A).unwrap();
        let _: &MyEnum = map.get(&MyEnumKey::A).unwrap();
        map[&MyEnumKey::B] = MyEnum::B(69);
    }

有关对 Map 的更多自定义性,请参阅 [variant_map_derive] 的文档

有关更详细的示例,请参阅此软件包 repo 上的 示例项目

依赖项

~0.4–1.1MB
~26K SLoC