1use crate::{Guard, HotReloadGuard, HotReloadModule, Module, StaticGuard, StaticModule};
2use core::ops::Deref;
3
4#[allow(clippy::large_enum_variant)]
6pub enum UniversalModule {
7 HotReload(&'static HotReloadModule),
9 Static(StaticModule),
11}
12
13impl<'a> Module<'a> for UniversalModule {
14 type Guard = UniversalGuard;
15
16 fn bytecode(&'a self) -> Self::Guard {
17 match self {
18 Self::HotReload(module) => UniversalGuard::HotReload(module.bytecode()),
19 Self::Static(module) => UniversalGuard::Static(module.bytecode()),
20 }
21 }
22}
23
24pub enum UniversalGuard {
26 HotReload(HotReloadGuard),
28 Static(StaticGuard),
30}
31
32impl Deref for UniversalGuard {
33 type Target = [u8];
34
35 fn deref(&self) -> &Self::Target {
36 match self {
37 Self::HotReload(guard) => guard,
38 Self::Static(guard) => guard,
39 }
40 }
41}
42
43impl Guard for UniversalGuard {}