registry_extension/
registry_extension.rs1use adar_registry::prelude::*;
2struct MenuItem(pub &'static str);
3struct StyleSheet(pub &'static str);
4
5fn main() {
6 let menu = Registry::<MenuItem>::new();
8 let styles = Registry::<StyleSheet>::new();
9 let mut website_store = vec![];
10
11 website_store.push(menu.register(MenuItem("Home")).as_generic());
12 website_store.push(menu.register(MenuItem("About")).as_generic());
13 website_store.push(styles.register(StyleSheet("website.css")).as_generic());
14
15 print_state("Original website", &menu, &styles);
16
17 let mut extension_store = vec![];
19 extension_store.push(menu.register(MenuItem("Weather")).as_generic());
20 extension_store.push(menu.register(MenuItem("News")).as_generic());
21 extension_store.push(styles.register(StyleSheet("extension.css")).as_generic());
22
23 print_state("After extension is loaded", &menu, &styles);
24
25 drop(extension_store);
27
28 print_state("After extension is unloaded", &menu, &styles);
29}
30
31fn print_state(step: &'static str, menu: &Registry<MenuItem>, styles: &Registry<StyleSheet>) {
32 println!("{}", step);
33 println!("\tMenu:");
34 for (e, item) in menu.read().iter() {
35 println!("\t\t{}: {}", e, item.0);
36 }
37 println!("\tStyleSheets:");
38 for (e, item) in styles.read().iter() {
39 println!("\t\t{}: {}", e, item.0);
40 }
41}