steel_registry/
menu_type.rs1use rustc_hash::FxHashMap;
2use steel_utils::Identifier;
3
4#[derive(Debug)]
8pub struct MenuType {
9 pub key: Identifier,
10}
11
12pub type MenuTypeRef = &'static MenuType;
13
14pub struct MenuTypeRegistry {
15 menu_types_by_id: Vec<MenuTypeRef>,
16 menu_types_by_key: FxHashMap<Identifier, usize>,
17 allows_registering: bool,
18}
19
20impl MenuTypeRegistry {
21 #[must_use]
22 pub fn new() -> Self {
23 Self {
24 menu_types_by_id: Vec::new(),
25 menu_types_by_key: FxHashMap::default(),
26 allows_registering: true,
27 }
28 }
29}
30
31crate::impl_standard_methods!(
32 MenuTypeRegistry,
33 MenuTypeRef,
34 menu_types_by_id,
35 menu_types_by_key,
36 allows_registering
37);
38
39crate::impl_registry!(
40 MenuTypeRegistry,
41 MenuType,
42 menu_types_by_id,
43 menu_types_by_key,
44 menu_types
45);