2 个版本
0.1.1 | 2023 年 9 月 6 日 |
---|---|
0.1.0 | 2023 年 9 月 6 日 |
#1838 in 数据结构
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_map 的 derive
功能包含。
此软件包还提供简单的 宏,通过 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] 的文档
依赖项
~0.4–1.1MB
~26K SLoC